<ul>
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>var nodeList = document.getElementsByTagName('li');for(var i = 0;i < nodeList.length;i++){
nodeList[i].onclick = function(){
console.log(i);
}
}
這里每個li的onclick觸發后 都會輸出4 ,因為console.log(i)只是對i變量的引用
如果改成一下代碼:for(var i = 0;i < nodeList.length;i++){
nodeList[i].num = i;
nodeList[i].onclick = function(){
console.log(this.num);
}
}
可以正常輸出0,1,2,3 猜測原因是在為li創建onclick事件的同時創建屬性num所以num和onclick都是屬于li的一部分,
那么再變化一下代碼for(var i = 0;i < nodeList.length;i++){ var num = i;
nodeList[i].onclick = function(){
console.log(num);
}
}
這里依然會輸出4,如果說是因為引用了num,而num又引用了i
那么,為什么以nodeList[i].num = i 的可行?
為li創建了屬性num的同時
nodeList[i].num = i 算是對i的引用還是賦值?
UMD判斷amd和commonJS有先后順序嗎?
藍山帝景
2018-09-03 08:17:32