Javascript 使用 process.argv 求和的问题

Javascript problem in sum using process.argv

我想在js中做一个简单的操作。这是我的代码:

var propriedade = process.argv[2]; 
var a = process.argv[3]; 
var b = process.argv[4];
var result = 0;
switch(propriedade) {
  case "sum":
    result = a + b;
    break;
  case "minus":
    result = a - b;
    break;
} 
console.log(result);

在终端中,结果不是总和。怎么了?

下次请说明你得到的结果

事实上,当你使用process.argv[i]时,你得到的结果是一个字符串:

console.log(
  {
      typeA: typeof a,
      typeB: typeof b
  }
);

输出

{
   typeA: 'string',
   typeB: 'string'
}

如您所知,String + String 是连接,因此如果您传递例如“12”和“45”,它将 return "1245" 而不是 57.

为此,您应该使用以下方法将字符串转换为数字(适用于整数或浮点数):

let a = Number(process.argv[3]);
let b = Number(process.argv[4]);

现在效果很好!!!

[编辑]

在javascript中,如果您使用“*”、“/”或“-”等运算符(“+”除外),字符串将转换为数字。

let a = "5";
let b = "2"; 
console.log({
    sum: a + b,
    minus: a - b,
    multiplication: a * b,
    devide: a / b
});
//OUTPUT: { sum: '52', minus: 3, multiplication: 10, devide: 2.5 }