javascript - 如何在 setTimeout 中维护循环变量的值? JavaScript

标签 javascript loops

基本上,我有一个循环,如果满足特定条件,则会触发 setTimeout。 但超时函数需要循环的值(即“i”),如下例所示。 我该怎么做?

 for( var i = 0; i <= 10; i++) {
    if(something){
      setTimeout(function(){
         console.log(i);
      }, 1000);
    }
 }

最佳答案

使用IIFE (立即调用函数表达式),它是一种 JavaScript 设计模式,它使用 JavaScript 的函数作用域来生成词法作用域。

 for( var i = 0; i <= 10; i++) {
    if(something){
        (function(i){
            setTimeout(function(){
               console.log(i);
            }, 1000);
         })(i);
     }
 }

关于javascript - 如何在 setTimeout 中维护循环变量的值? JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568642/

相关文章:

javascript - 如果当前组件发生更改,则停止加载新的路由/组件

javascript - 无法使用 lodash 更改对象键值

java - Java中不循环地迭代某个目录中的文件

javascript - 新的数据库元素只能通过刷新整个页面来显示

javascript - Node.JS 中的 ECMAScript 6 模块

javascript - 我如何围绕Fabric.js圈绘制字母

loops - 只有最后一个条目被选择到 itab

javascript - 如何修改和恢复简单的 Javascript 循环

javascript - jQuery delegate() 不适用于 $(this)

Java - 如何遍历 ArrayList 以添加元素?