循环的Javascript冻结浏览器,没有语法错误
Javascript for-loop freezes the browser, without syntax error
我在javascript中的一行代码有问题。我做了一件事:
function evvalt(valtoztat){
for(i=0;i<12;i++) naptar(valtoztat);
}
如果我这样做,浏览器就会冻结。naptar(函数)没有问题,它运行得很好。这个问题有趣的一面下一个:
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我想知道问题出在哪里。
感谢您的协助,David
由于您尚未将变量i
声明为局部变量,因此它被视为全局变量,并且很可能naptar()
函数中的某些内容也在更改i
的值,从而导致无限循环。
在i
的前面添加var
,使其成为局部变量:
function evvalt(valtoztat){
for(var i=0;i<12;i++) naptar(valtoztat);
}
此外,还可以在naptar()
中查找使用i
的位置,而不将其声明为局部变量(或在naptar()
调用的任何函数中)。您应该始终在函数中使用var
声明局部变量,这样它们就不会成为隐式全局变量。
更好的是,在Javascript中开始使用严格模式,在这种模式下,创建这样的意外全局将成为一个错误,而不是一个无声的错误。
您正在计算全局空间,因此有可能在其他地方更改"i"。
宁愿做:
for (var i = 0, i < .. , i++) {..
如果你在其他地方以同样的方式执行for循环,难怪它不起作用。
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- Javascript未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- 未捕获的语法错误:意外的标记{
- "未捕获的语法错误:意外的标记}"
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- $(input[]).仅在firefox中出现每个抛出语法错误
- 为什么浏览器没有为语法错误抛出异常
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- 未捕获的语法错误:意外的令牌,
- jQuery.getJSON失败,语法错误
- "未捕获的语法错误:意外的标记"角度JS
- 参数列表Three.js之后的未捕获语法错误:缺少)
- 循环的Javascript冻结浏览器,没有语法错误
- 为什么匿名函数本身就是javascript中的语法错误
- 这怎么不是语法错误?这毫无意义!(javascript)
- 语法错误:缺少:在属性 ID 之后
- 未捕获错误:语法错误,无法识别的表达式:input[@type=submit]