您好,欢迎来到刀刀网。
搜索
您的当前位置:首页关于闭包问题的详细介绍(二)

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

来源:刀刀网


我在整理闭包问题的时候,看到一道前端面试题
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);
}

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

再补充一道闭包问题:

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


 

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务