看下面代码,给出输出结果
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
立即执行函数
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
);
}
```
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。