JavaScript 如何修复陷阱计数器 [duplicate]

javascript how to fix pitfalls counter [duplicate]

提问人:galhayne 提问时间:11/3/2022 最后编辑:galhayne 更新时间:11/3/2022 访问量:28

问:

我正在尝试运行一个for循环并在不使用let的情况下打印当前索引

这是我的代码:

function init() {
  for (var index = 0; index < 5; ++index) {
    setTimeout(() => {
      console.log(index);
    }, index);
  }
}

我预计: 0 1 2 3 4 但我得到 5 5 5 5 5

一旦 Var 替换在 Let 中,问题就会得到解决

我想留在 Var

如何解决问题? 谢谢

JavaScript 循环 闭包

评论


答:

0赞 Ampit 11/3/2022 #1
function init() {
  for (var index = 0; index < 5; ++index) {
   const i = index;
   setTimeout(() => {
    console.log(i);
   }, i);
  }
 }

这应该有效。

评论

0赞 galhayne 11/3/2022
是否可以保持超时并获取索引?
0赞 Ampit 11/3/2022
不确定,如果您希望某些东西在一定延迟后连续运行,您也可以使用 setInterval。也许这对你有用。