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 循环,难怪它不起作用。