原生js已載入就執行函式 JS 函式的執行時機

2021-10-14 13:45:38 字數 753 閱讀 4304

如果有下面這段**,你覺得應該輸出什麼?

let i = 0

for(i = 0; i < 6; i++) , 0)

}

感覺上應該輸出 0,1,2,3,4,5

但它實際的輸出卻是 666666!

settimeout 代表忙完手頭的事之後,馬上執行 ***,關鍵在於手頭的事,是否改變了 i

因為迴圈先執行完,此時 i = 6,然後再執行 settimeout,所以就會輸出 666666

那如何才能輸出 0,1,2,3,4,5 呢?

js 給出的答案是把 let 寫在 for 裡面

for(let i = 0; i < 6; i++) , 0)

}

因為 js 在 for 和 let 一起用的時候會新增操作,每次迴圈都會把 i 複製乙份,留在這個空間

所以最後輸出的就是留在這個空間的 i,也就是 0,1,2,3,4,5 了

那還有沒有別的辦法輸出 0,1,2,3,4,5 呢?

讓我們試試 let 出現後,被遺棄的立即執行函式吧

let i = 0

for(i = 0; i < 6; i++) , 0)}(i)

}

每次迴圈定義乙個立即執行函式,並將 i 作為引數傳給這個函式,那輸出的值就不會隨著 i 的變化而變化了,因此輸出的結果自然就是 0,1,2,3,4,5 咯

js 網頁載入完畢,執行js函式

一般網頁載入完畢後,會馬上執行js,給按鈕,超連結等標籤設定多種行為,實現這樣的方式 dofunction firstfunction secondfunction 為js的三個函式 1 乙個函式 window.onload dofunction 2 多個函式 函式數量過多,會出錯 window.o...

jQuery和js頁面載入完成之後就執行的兩種方法

jquery載入頁面的方法 頁面載入完成就執行 建議大家看下windows.onload與 document ready之間的區別。1 function 2 document ready function 3 window.onload function html 為點選,且頁面需要引用jquery...

原生js封裝函式

原理是對元素的所有的子節點做乙個遍歷。然後做乙個判斷,如果是子元素節點 nodetype 1 則遍歷該子元素的所有的子節點,用遞迴檢查是否包含空白節點 如果處理的子節點是文字節點 nodetype 3 則檢查是否是純粹的空白節點,如果是,就將它從xml物件中刪除。1 function removew...