javascript - 循环迭代器问题中带循环的JS函数

标签 javascript

这是我的代码:

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/

相关文章:

javascript - 显示最初隐藏的 iframe

javascript push() 没有按预期工作

javascript - 努力更新对象数组中的列表

javascript - 使用 Javascript 复制到剪贴板功能

javascript - 如何只加载一个div而不加载所有页面文件

javascript - 如何在Jquery Mobile中恢复页面URL?

javascript - 如何从 Chrome 开发工具中删除 "REMOVE"按钮?

javascript - 为什么更新的 javascript 文件没有在已部署的网站上执行; azure 网站上的 asp MVC

javascript - 同时获取2个ajax数据

javascript - 同构 React 与 React Router 和 KOA