简单for循环导致的javascript无限循环
由于这一小块代码,我得到了一个无限循环。如果我在循环之前将VARI声明为任何值(即VARI=0),那么它将变为固定值,我不知道为什么。熟悉javascript的复杂性的人能向我解释一下这里发生了什么吗简单for循环导致的javascript无限循环,javascript,for-loop,infinite-loop,Javascript,For Loop,Infinite Loop,由于这一小块代码,我得到了一个无限循环。如果我在循环之前将VARI声明为任何值(即VARI=0),那么它将变为固定值,我不知道为什么。熟悉javascript的复杂性的人能向我解释一下这里发生了什么吗 for (num = 1; num <= 2; num++) { for (i = 1; i < num; i++) { console.log("hi"); } } for(num=1;num代码似乎很好,请在jsFiddle上查看它的实际操作 另一个注
for (num = 1; num <= 2; num++) {
for (i = 1; i < num; i++) {
console.log("hi");
}
}
for(num=1;num代码似乎很好,请在jsFiddle上查看它的实际操作
另一个注意事项:小心javascript中的变量。您应该始终使用var
来声明它们;如果您忘记了它们最终将成为全局变量!它不应该是无限的,但下面是可能发生的情况
您在访问i时没有声明var,这意味着您将其用作全局变量而不是局部变量。请仔细分析您的代码,找出任何在循环中混乱的全局“i”或“num”。由于i
未声明为局部var
,因此您的代码实际上是在改变变量/对象窗口.ie> 以及window.num
添加var
关键字可以解决问题:
for (var num = 1; num <= 2; num++) {
for (var i = 1; i < num; i++) {
console.log("hi");
}
}
for(var num=1;num此处无无限循环。打印“hi”一次(Chrome 19.0.1084.52 m)对我来说似乎运行良好。无无限循环!!!您在此处发布之前简化了示例吗?给出的代码(无上下文)运行正常。可能在其他地方声明了一个i
,并在循环的实际主体中进行了修改?我已经找出了问题所在,它不是for循环本身中的无限循环,而是包含它的函数的无限调用。这是由于我的函数在同样使用var的for循环中被调用我和我函数中的for循环不断修改该值,这样调用我函数的for循环就永远不会退出。实际上,了解哪些全局变量被代码覆盖是很有趣的。如果可能,在进入外部for循环之前使用firebug设置断点。然后,使用监视窗口查看var的值我想知道为什么它会挂起。顺便说一句,它是进入无限循环还是抛出并出错并停止执行。查看控制台错误或只是逐步检查代码。我已经知道出了什么问题,它不是for-it循环中的无限循环self,但包含它的函数的无限调用。这是因为我的函数在一个同样使用var i的for循环中被调用,而我的函数中的for循环不断修改该值,因此调用我的函数的for循环永远不会退出。它将是无限循环,值如下所示:outer:num=0-->inner:i=0,num=1-->i=1,num=2-->外部:num=0-->内部:i=2,num=1-->i=1,num=2-->内部:i=2,num=2-->i=1,num=2-->外部:num=0-->内部:i=2,num=1-->i=1,num=2-->外部:num=0-->内部:i=3,num=1-->i=1,num=2-->外部:num=0