一个闭包小测试

for(var i = 0; i < 5; i++){
	setTimeout(function() {
		console.log(i);
	},500);
}// 55555
for(var i=0; i < 5; i++){
	(function(){
		setTimeout(function(){
			console.log(i);
		},500);
	})();
}//55555
for(var i=0; i < 5; i++){
	(function(i){
		setTimeout(function(){
			console.log(i);
		},500);
	})(i);
}//01234

settimeout异步执行和闭包的综合;

第一个,没用闭包,定时器在执行时,它的作用域就和for循环外面的一样。第二个,用了闭包,它的作用域就多了一层,这一层里面有自己的变量。

每次for循环都是在注册一个定时器

你可能感兴趣的:(一个闭包小测试)