前端面試題之針對setTimeout問題的解決辦法

2021-09-29 02:02:14 字數 822 閱讀 9879

for (var i = 1; i <= 5; i++) , i * 1000)

}

這篇文章中,我預設大家都知道上邊這段**的列印結果是5個6,不懂得朋友可以參考這篇部落格。那怎樣讓他列印0,1,2,3,4,5呢? 下面是我所知道的幾種方法。

定義:函式 a 內部有乙個函式 b,函式 b 可以訪問到函式 a 中的變數,那麼函式 b 就是閉包。

意義:讓我們可以間接訪問函式內部的變數。

for (var i = 1; i <= 5; i++) , j * 1000)

})(i)

}

在上述**中,我們首先使用了立即執行函式將 i 傳入函式內部,這個時候值就被固定在了引數j上面不會改變,當下次執行timer這個閉包的時候,就可以使用外部函式的變數 j,從而達到目的。

let  是區塊變數,每個 i 只能存活到大括號結束,並不會把後面的 for 迴圈的  i  值賦給前面的settimeout中的 i;而 var 是區域性變數,這個 i 的生命週期不受for迴圈的大括號限制。

for (let i = 1; i <= 5; i++) , i * 1000)

}

for (var i = 1; i <= 5; i++) ,

i * 1000,

i)}

使用settimeout的第三個引數,這個引數會被當成timer函式的引數傳入。

前端面試題

sprites是什麼和為什麼要使用他們?css 精靈 把一堆小的整合到一張大的上,減輕伺服器對的請求數量 有可能替代sprites的方法是什麼?svg圖示,字型圖示,字元編碼等等。1 在div排版的時候,假設現在是100px的寬,我在盒子左側用padding left留個10px的白,div就撐開了...

前端面試題

行內元素有哪些?塊級元素有哪些?空 void 元素有哪些?link和 import的區別是?常見相容性問題?含移動端 html5的離線儲存?描寫一段語義化的html 吧 html5的form如何關閉自動完成功能?什麼是閉包 closure 為什麼要用?localstorage和sessionstor...

前端面試題

朋友碰到的筆試題,在此記錄一下,並且記下碰到的有難點但是自己沒注意的到的面試題!function isnumber x else sum 2,3 5 sum 2 3 5 請寫出sum函式的具體實現。function sum a,c return a c 該題考查的是乙個以前沒接觸過的東西,叫做柯里化...