es6中let解決異步事件的原理

es6 let 與var相比區別是,let在每一個for的每一個循環下都創建一個獨立的i
========自定義屬性=================
for (var i = 0; i < box.length; i++) {
	box[i].idx = i;
	box[i].onclick = function() {
		alert(this.idx);
	}
}

========閉包=================
for (let i = 0; i < box.length; i++) {
	(function(a) {
		box[a].onclick = function() {
			alert(a);
		}
	})(i)
}

========let=============
for(let i=0; i<box.length; i++){
	box[i].οnclick=function(){
		alert(this.idx);
	}  
}

原理:等價於如下,這裏使用了包裝函數,就可以讓每次循環都有一個獨立的i

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章