setTimeout()函数执行完结果却是 五个6 的原因是?
for (var i = 1; i <= 5; i++) {
setTimeout(function timer() {
console.log(i);
}, i * 1000);
}
// 其实我们想得到的结果是1,2,3,4,5,结果却是五个6
虽然用js 闭包解决了问题,得到想要的1,2,3,4,5,但还是不明白上述的代码为什么出现五个6?
for (var i = 1; i <= 5; i++) {
(function(j) {
setTimeout(function timer() {
console.log(j);
}, j * 1000);
})(i);
//通过一个立即执行函数,为每次循环创建一个单独的作用域
临摹微笑
相关分类