Javascript for-loop 冻结浏览器,没有语法错误
Javascript for-loop freezes the browser, without syntax error
我对 javascript 中的一行代码有疑问。我做了一个功能:
function evvalt(valtoztat){
for(i=0;i<12;i++) naptar(valtoztat);
}
如果我这样做,浏览器会死机。 naptar(function) 没有问题,它可以完美运行。接下来这个问题有趣的一面:
function evvalt(valtoztat){
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
}
这段代码没有问题..:O
我想知道是什么问题。
感谢您的协助,
大卫
由于您没有将变量 i
声明为局部变量,因此它被视为全局变量,并且您的 naptar()
函数中的某些内容可能也在改变 i
导致无限循环。
在使用i
的前面加上var
这样使它成为一个局部变量:
function evvalt(valtoztat){
for(var i=0;i<12;i++) naptar(valtoztat);
}
并且,还要在 naptar()
中查找您使用 i
的地方,而没有将其声明为局部变量(或在 naptar()
调用的任何函数中)。您应该始终在函数中使用 var
声明局部变量,这样它们就不会成为隐式全局变量。
更好的是,在 Javascript 中开始使用 strict mode,在这种情况下创建这样的意外全局变量会成为一个错误,而不是一个无声的错误。
你正在污染全球 space 所以你有可能在其他地方改变你的 'i'。
宁愿做:
for (var i = 0, i < .. , i++) {..
如果您在其他地方以相同的方式执行 for 循环,难怪它不起作用。
我对 javascript 中的一行代码有疑问。我做了一个功能:
function evvalt(valtoztat){
for(i=0;i<12;i++) naptar(valtoztat);
}
如果我这样做,浏览器会死机。 naptar(function) 没有问题,它可以完美运行。接下来这个问题有趣的一面:
function evvalt(valtoztat){
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
naptar(valtoztat);
}
这段代码没有问题..:O 我想知道是什么问题。
感谢您的协助, 大卫
由于您没有将变量 i
声明为局部变量,因此它被视为全局变量,并且您的 naptar()
函数中的某些内容可能也在改变 i
导致无限循环。
在使用i
的前面加上var
这样使它成为一个局部变量:
function evvalt(valtoztat){
for(var i=0;i<12;i++) naptar(valtoztat);
}
并且,还要在 naptar()
中查找您使用 i
的地方,而没有将其声明为局部变量(或在 naptar()
调用的任何函数中)。您应该始终在函数中使用 var
声明局部变量,这样它们就不会成为隐式全局变量。
更好的是,在 Javascript 中开始使用 strict mode,在这种情况下创建这样的意外全局变量会成为一个错误,而不是一个无声的错误。
你正在污染全球 space 所以你有可能在其他地方改变你的 'i'。
宁愿做:
for (var i = 0, i < .. , i++) {..
如果您在其他地方以相同的方式执行 for 循环,难怪它不起作用。