关于javascript:声明变量不起作用,除非它等于0

Declaring a variable doesnt work unless it equals 0

本问题已经有最佳答案,请猛点这里访问。

嘿,我有这段代码。我的问题是,除非我将sumnum设置为一个整数,并且我不明白为什么它不能工作。

1
2
3
4
5
6
7
8
var sumNum; //var sumNum = 0;

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


如果您没有定义,那么会隐式地为它分配一个值undefined

对它的数学运算将导致NaN

1
console.log(undefined+1)


想想当它不是数字时会发生什么。它在中出现的第一个语句是sumNum += i。如果不将其设置为数字,则其值为undefined,因此它计算sumNum = undefined + i,得出NaN。之后是sumNum = NaN + i,结果仍然是NaN

要修复它,您可以检查之前的值,如果该值未定义,则将其设置为0sumNum = sumNum || 0(在falsy时将其设置为0)。

但我认为您甚至不希望它是全局变量,在这种情况下,您只需要在函数内部声明它(最好使用普通语法声明它)。

1
2
3
4
5
6
7
8
9
function sumAll(startNum, endNum) {
  var sumNum = 0;
  for (var i = startNum; i <= endNum; i++) {
    sumNum += i;
  }
  return sumNum;
}

console.log(sumAll(1, 3));