js 闭包经典

闭包随处可见吧,但往往会涉及异步问题

(function cc(){
	var i ,arr=[];
	i = 0;
	for(i;i<3;i++){
		arr.push(function(){
			console.log(i)
		})
	}
	
	arr[0](); // 3
	arr[1](); // 3
	arr[2](); // 3
    //函数异步
})()

// var 换成 let
(function cc(){
	let i ,arr=[];
	i = 0;
	for(i;i<3;i++){
		arr.push(function(){
			console.log(i)
		})
	}
	 
	arr[0]();  // 3
	arr[1]();  // 3
	arr[2]();  // 3
})()

要实现逐步打印
 

(function cc(){
	let i ,arr=[];
	i = 0;
	for(i;i<3;i++){
		(function(i){
			console.log(i)
		})(i)
	}
	
	// 0
	// 1
	// 2
})()


(function cc(){
	let i ,arr=[];
	i = 0;
	for(i;i<3;i++){
		(function(i){
			setTimeout(()=>{console.log(i)},1000)
		})(i)
	}
	
	// 0
    // 1
    // 2

})()

猜你喜欢

转载自blog.csdn.net/zhan_lijian/article/details/84626656