声明一个变量是不起作用的,除非它等于0。

13 浏览
0 Comments

声明一个变量是不起作用的,除非它等于0。

嘿,我有一段代码。我的问题是,除非我将sumNum设置为整数,否则它无法工作,而我不明白为什么。

var sumNum; //var sumNum = 0;
const sumAll = function(startNum, endNum) {
    for(var i = startNum; i<= endNum; i++) {
        sumNum += i;
    }
    return sumNum;
}

0
0 Comments

如果你没有定义变量,那么它会被隐式地赋值为undefined。

对undefined进行数学运算会得到NaN。

console.log(undefined+1)

0
0 Comments

声明一个变量时,除非将其设为0,否则无法正常工作。出现这个问题的原因是,当变量未设置为数字时,它的值为undefined。因此,在计算sumNum += i时,会得到sumNum = undefined + i,结果为NaN。然后,sumNum = NaN + i,仍然得到NaN。

解决方法是在使用变量之前检查其值,并在其为undefined时将其设为0:sumNum = sumNum || 0(当值为假时将其设为0)。

但我认为你甚至不希望它成为全局变量,在这种情况下,你只需要在函数内部声明它(最好使用正常的语法进行声明)。

整理后的代码如下:

function sumAll(startNum, endNum) {
  var sumNum = 0;
  for (var i = startNum; i <= endNum; i++) {
    sumNum += i;
  }
  return sumNum;
}
console.log(sumAll(1, 3));

感谢你的建议,但我认为这不是问题的原因。

0