Vad*_*off 3 javascript for-loop infinite-loop
由于这小段代码,我遇到了无限循环。如果我在循环之前将var i声明为任何值(即var i = 0),它将变得固定,并且我不确定为什么。可以让熟悉javascript复杂性的人向我解释这里发生了什么吗?
for (num = 1; num <= 2; num++) {
for (i = 1; i < num; i++) {
console.log("hi");
}
}
Run Code Online (Sandbox Code Playgroud)
由于i未声明为local var,因此您的代码将有效更改变量/对象window.i以及window.num
添加var关键字应该可以解决此问题:
for (var num = 1; num <= 2; num++) {
for (var i = 1; i < num; i++) {
console.log("hi");
}
}
Run Code Online (Sandbox Code Playgroud)
这没有回答为什么程序进入无限循环的问题。但是您只知道挂起的代码正在尝试更改window.i,window.num并且可能在其他地方使用。
阅读有关javascript作用域规则的更多信息。