https://jslinterrors.com/dont-make-functions-within-a-loop
- 功能可能work,也可能會不如預期
- 狀況: 比如迴圈中的function,參考到共用的變數
elems[i].addEventListener("click", function () {alert(i);});
}
- 若elems長度為5, 預期click第1個elems會跳出0(i start from 0),然而實際上每個按鈕跳出來都會是5
- 由於迴圈跑完i會變成5,i這個共用的元件被每個function所參考,所以結果是5
- Solution: 利用javascript中,function( argument )之argument皆為call by value的特性
直接把想要的value傳進function,讓每一個function都保存當時的i在自己的argument中
a
沒有留言:
張貼留言