除非它等于0,否则声明一个变量不起作用[重复]

Posted

技术标签:

【中文标题】除非它等于0,否则声明一个变量不起作用[重复]【英文标题】:Declaring a variable doesnt work unless it equals 0 [duplicate] 【发布时间】:2019-06-26 20:46:12 【问题描述】:

嘿,所以我有这段代码。我的问题是,除非我将 sumNum 设置为整数并且我不明白为什么,否则它不起作用。

var sumNum; //var sumNum = 0;

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

【问题讨论】:

如果您不将变量声明为零,则您正在向undefined 添加一些内容,这会导致非数字。 为什么要使用全局变量?在循环之前在函数内部使用let sumNum = 0——尽管对于这种特殊情况,为什么不完全跳过循环并使用已知的数学公式来计算给定范围内所有整数的总和? 我正在做的练习希望我使用循环。我在循环之外声明了我的变量,因为我认为一旦完成循环就无法返回它 【参考方案1】:

如果你没有定义,那么它会被隐式分配一个值undefined

对其进行数学运算将产生NaN

console.log(undefined+1)

【讨论】:

【参考方案2】:

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

要修复它,您可以检查之前的值并将其设置为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,否则声明一个变量不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

除非处理了拖动,否则 HTML5 放置事件不起作用

除非您离开应用程序并返回,否则按钮 onclick 事件在 iOS 中不起作用,然后它就起作用了

除非应用程序已经在运行,否则 URL 方案侦听器不起作用

除非刷新应用程序,否则 SET 方法第一次不起作用 - React Native

除非我刷新,否则 jQuery mobile 中的 JavaScript 不起作用

除非模拟器是 XS 类型,否则屏幕上的按钮不起作用