小白问题,求给位赏脸
for (var i = 0; i < 5; i++) {
setTimeout(function() { console.log(i); }, i * 1000 );
}
知道输出5个5 知道这快是事件队列和作用域引起的,但是当使用闭包时结果不同;
for (var i = 0; i < 5; i++) {
(function(x) {
setTimeout(function() { console.log(x); }, x * 1000 );
})(i);
}
一次输出0, 1,2,3,4 ;
可是 里面这和立即执行函数的作用是什么?是直接改变了事件队列吗?
求大神,大佬指点~~
5个5是循环中每个迭代在运行时都会给自己捕获一个i 后面那段代码则是通过申声明并立即执行函数来创建一个函数来创建作用域的 具体看看我的这篇文章 闭包