很久沒發內容了:先發個簡單的知識點函數
咱們都知道for循環測試
for (var i = 0; i < 10; i++) { console.log(i) } //打印0-9
那麼,若是換成這兩種呢?spa
var a = null; for (var i = 0; i < 10; i++) { a = function(){ console.log(i); } a(); } //打印0-9
var a = null; for (var i = 0; i < 10; i++) { a = function(){ console.log(i); } } a(); //打印10
爲何會有兩種不一樣的結果,說到這兒你們都想到了當即執行函數。code
當函數在for循環內執行的時候,循環一次函數執行一次打印一次 i , 因此 i 的值也在變化。blog
反之,當函數在for循環外執行的時候, 函數是在for循環執行完畢後才執行, 此時的 i 的值也變爲10了, 因此打印結果不一樣。索引
不少時候咱們都須要在循環的過程當中綁定函數,但卻不當即執行,針對此種狀況, 建議將var 改成 let;事件
for (var i = 0; i < elements.length; i++) { elements[i].onclick = function(){ console.log(i) } } //點擊不一樣的element(存放綁定點擊事件的DOM),打印出來的是0-elements.length元素的索引
簡單寫一下,建議多作測試,這樣才能更好理解element