當即執行函數

很久沒發內容了:先發個簡單的知識點函數

咱們都知道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

相關文章
相關標籤/搜索