【问题标题】:JavaScript Loop stuck beginnerJavaScript循环卡住初学者
【发布时间】:2013-06-16 22:34:06
【问题描述】:

我正在尝试一些循环,在这个特定的情况下,我不明白为什么 sumSoFar = 0。 这是来自 Learn Street.com 的任务

function sum(n) {
    var sumSoFar = 0;
    var currentNumber = 1;

    while (currentNumber <= n) {
        sumSoFar += currentNumber;
        currentNumber += 1;
    }

    return sumSoFar;
}

【问题讨论】:

  • 对于传入的n 的值是多少?它似乎在这里工作:jsfiddle.net/jfriend00/kXrV8
  • 你的意思是你不明白为什么sumSoFar在函数开始时设置为0?
  • 这不应该发生,除非n&lt;1
  • 如果 sumSoFar 未初始化为零,sumSoFar += currentNumber; 将导致 NaN
  • Henry - 由于您是新来的,我想指出的是,当您发布问题时,您应该在接下来的 30 分钟左右签到,以回复立即提出的问题关于你的问题。前 30 分钟是您的问题访问量最大的地方,如果不清楚您在问什么,或者如果人们猜错了您的问题,您将失去大部分获得您想要的答案的机会想要。

标签: javascript loops while-loop


【解决方案1】:

sumSoFar 在函数开始时被初始化为零,因为函数的其余部分使用+= 运算符,该运算符获取sumSoFar 的当前值并向其添加一个值,然后将新值赋回到sumSoFar。如果它没有被初始化为零,那么它就没有初始值,并且对它的第一个+= 操作不会得到想要的结果。

将其初始化为零为其提供了所需的起点,以便在第一次通过 while 循环时,它将currentNumber 添加到初始值零并将其分配给sumSoFar,这是所需的行为。

仅供参考,您可以在此处查看您的函数:http://jsfiddle.net/jfriend00/kXrV8/,在最新版本中,您可以尝试为您的 sum(n) 函数输入不同的参数。

【讨论】:

  • 在我的回答中向 jsFiddle 添加了在sum(n) 中尝试n 的任何值的能力。
【解决方案2】:

如果您不将 sumSoFar 初始化为零,则无法向其添加值,因为它不是数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2019-03-17
    • 2012-11-19
    • 2013-03-29
    • 2016-01-05
    相关资源
    最近更新 更多