除非变量等于0,否则声明变量不起作用

时间:2019-02-02 13:44:49

标签: javascript

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

var sumNum; //var sumNum = 0;

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

2 个答案:

答案 0 :(得分:3)

如果您未定义,则为它隐式分配一个值undefined

并对其进行数学运算将得出NaN

console.log(undefined+1)

答案 1 :(得分:0)

考虑当它不是数字时会发生什么。它出现的第一个语句是-q6。当您不将其设置为数字时,其值为sumNum += i,因此它将计算undefined,结果为sumNum = undefined + i。然后是NaN,仍然会生成sumNum = NaN + i

要解决此问题,您可以先检查该值,然后将其设置为NaN(如果未定义):0(在错误时将其设置为0)。

但是我认为您甚至都不希望它是一个全局变量,在这种情况下,您只需要在函数中声明它(最好使用常规语法声明)

sumNum = sumNum || 0