//循环中的闭包
for(var i = 0; i < 10; i++){
setTimeout(function(){
console.log(i);
},1000);
} //不会输出数字0--9,而是会输出数字10十次
//使用匿名函数,创建独立作用域
for(var i = 0; i < 10; i++){
(function(e){
setTimeout(function(){
console.log(e);
},1000);
})(i);
}// 输出0--9
//避免引用错误
//为了正确的获得循环序号,最好使用匿名包裹器,(其实就是我们通常说的自执行匿名函数)
for(var i = 0; i < 10; i++){
(function(e){
setTimeout(function(){
console.log(e);
},1000);
})(i);
} //输出 0--9
for(var i = 0; i < 10; i++){
(function(){
var j = i;
setTimeout(function(){
console.log(i);
},1000);
})();
} //输出0--9
//有另一种方法完成同样的工作,就是从匿名包装器中返回一个函数,这和上面的代码效果一样
for(var i = 0; i < 10; i++){
setTimeOut((function(e){
return function(){
console.log(e);
}
})(i),1000);
}