当前位置:Gxlcms > JavaScript > 关于闭包问题的详细介绍(二)

关于闭包问题的详细介绍(二)

时间:2021-07-01 10:21:17 帮助过:6人阅读

我在整理闭包问题的时候,看到一道前端面试题
for (var i = 0; i < 10; i++) { setTimeout(function() { console.log(i); }, 0); }
了解 js 的异步机制的都知道,
输出结果是: 10 10 10 ... 10
然后面试官又问 如果希望得到的是0 1 2 ... 9,如何能够解决这个问题

我脑海想到的第一个解决方法就是用let代替var使for形成块级作用域;

第二个解决方法,使setTimeout函数立即执行,形成同步输出:
for (var i=0; i < 10; i++) {
  (function (temp) {
    setTimeout(function() {
      console.log(temp);
    }, 0);
  })(i);
}

如果有其他解决方法,亲爱的朋友们可以评论补充

再补充一道闭包问题:
这道题可以较深理解闭包机制,解决这道题比较重要的是理解被保护的数据是哪一个,运行的顺序之类的,
输出:
我在这就不多做解释了,想一下很容易通的


 

以上就是关于闭包问题的详细介绍(二)的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行