2015年11月27日 星期五

[personal note] jshint error

1. 於迴圈中創立function:
https://jslinterrors.com/dont-make-functions-within-a-loop

  • 功能可能work,也可能會不如預期
  • 狀況: 比如迴圈中的function,參考到共用的變數
for (i = 0; i < elems.length; i++) {
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

沒有留言:

張貼留言