为什么这会造成无限循环? - Codeacademy Js 课程

Why does this create an infinite loop? - Codeacademy Js Course

我目前正在 Codeacademy 上一门基本的 Js 课程,并且正在使用 while 循环场景进行测试。
当我尝试这个(见下面的代码)时,我的浏览器选项卡崩溃了。
我假设这是因为我创建了一个无限循环。

谁能给我指出问题所在?

var timeIs = 0

var addTime_1 = function(time){
    var newTime = time + 1;
    return newTime;
}

var addTimes = function(times){
    while (times<10){
        addTime_1(times)
    }
}


addTimes(timeIs)

addTime_1 实际上并没有改变 times 的值。它只是 returns 用 +1 调用的值。

由于 times 从未设置为任何新内容,因此它将一直保持为 0。

并且由于 0 始终小于 10,因此我们有一个无限循环。

编辑: 就像其他人所说的那样,最有可能将 times 设置为从 addTime_1 返回的值,即 times = addTime_1(times)

您需要了解变量作用域的概念。 return关键字的目的

newTime 是一个全新的变量,times 不会更新,除非您明确告诉它。

times = addTime_1(times);

您可能还想考虑使用 for() 循环代替 while(),前提是您知道希望循环 运行 的次数(在本例中为 10 次)。这样您就可以更好地控制循环,因为您可以选择循环如何自行递增。