这是我的代码:
function func(){
for(i=0; i < 5; i++){
alert('B');
}
}
for(i=0; i < 5; i++){
func();
alert('A');
}
我的预期是:BBBBBABBBBBABBBBBABBBBBABBBBBA
但是收到的只是BBBBBA
我发现那是因为在 JS 中有函数作用域,而不是 block 作用域。我想知道的是如何保持这种行为。我的意思是强制执行类似 block 范围的操作。否则很容易产生非常讨厌的错误 - 例如在使用别人编写的函数或您自己编写的函数时,但几个月前。
最佳答案
确保使用 var i=0
而不仅仅是 i=0
。否则,它会 float 到全局范围内并被两个 循环使用。
function func(){
for(var i=0; i < 5; i++){
alert('B');
}
}
for(var i=0; i < 5; i++){
func();
alert('A');
}
关于javascript - 循环迭代器问题中带循环的JS函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7437107/