开发者社区> 问答> 正文

看下面代码,给出输出结果

看下面代码,给出输出结果

for (var i = 1; i <= 3; i++) { console.log(i); } // 1 2 3

但是

for (var i = 1; i <= 3; i++) { setTimeout(() => { // setTimout在for里面是异步执行的,在延迟输出的时候,i的值已经是4了 console.log(i); }, 0); } // 4 4 4

如何输出 1 2 3

展开
收起
kun坤 2019-11-28 14:01:02 512 0
1 条回答
写回答
取消 提交回答
  • 立即执行函数
    
    for (var i = 1; i <= 3; i++) {
      setTimeout(
        (i => {
          console.log(i);
        })(i),
        0
      );
    }
    
    闭包
    
    for (var i = 1; i <= 3; i++) {
      setTimeout(
        (() => {
          var j = i;
          return function() {
            console.log(j);
          };
        })(),
        0
      );
    }
        ```
    2019-11-28 14:01:18
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载