为什么这会造成无限循环? - 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 次)。这样您就可以更好地控制循环,因为您可以选择循环如何自行递增。
我目前正在 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 次)。这样您就可以更好地控制循环,因为您可以选择循环如何自行递增。