首先,还是看到一道面试题
for ( var i = 0 ; i < 10 ; ++i ) {
setTimeout(function(){
console.log(i);
},0)
} //输出结果比较诡异。为10个10.
for ( var i = 0 ; i < 10 ; ++i ) {
setTimeout(function(){
console.log(i);
},0)
}
//相当于
++i(0)
setTimeout()
++i(1)
setTimeout()
++i(2)
setTimeout()
.
.
.
++i(9)
setTimeout()
//然而真正执行的顺序是
++i(0)
++i(1)
++i(2)
.
.
.
++i(9)
setTimeout(i) //第一次
setTimeout(i) //第二次
.
.
.
setTimeout(i) //第十次