<script type="text/javascript">
for (var i = 0; i < 5; i++) {
setTimeout(function(){
console.log(i);
},0)
}
</script>
// 5 5 5 5 5
最终打印5个五,
为什么不是打印01234,因为JS 是单线程,只有完成所有的script标签中的主要任务,才会把setTimeout里面的匿名函数执行,可是变量i是全局变量,所以最终会打印5个,其实可以利用闭包将变量i传递给匿名函数
for (var i = 0; i < 5; i++) {
setTimeout(
(function(a) {
var tem = a;
return function(){
console.log(tem);
}
})(i)
,0)
}
利用了闭包匿名函数直接可以获取i的值,并返回一个匿名函数