久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當前位置:首頁>職場>web前端一次性定時器怎么寫(前端面試題?JavaScript?定時器)

web前端一次性定時器怎么寫(前端面試題?JavaScript?定時器)

發布時間:2024-01-24閱讀(12)

導讀今天有事外出,所以就挑簡單的來討論——定時器setTimeout定時器在面試題中經常出現,都是搭配來考察其他相關知識的。定時器下列代碼會在控制臺輸出什么?點....

web前端一次性定時器怎么寫(前端面試題?JavaScript?定時器)(1)

今天有事外出,所以就挑簡單的來討論 ——

定時器 setTimeout

定時器在面試題中經常出現,都是搭配來考察其他相關知識的。

定時器

下列代碼會在控制臺輸出什么?

web前端一次性定時器怎么寫(前端面試題?JavaScript?定時器)(2)

點擊下面小程序可以瀏覽完整題目和選項。

上面是一道經典的題目,主要用于考察 JavaScript 的作用域事件隊列

當執行 for 循環時候,調用 setTimeout 異步函數,將其中的回調函數推到事件隊列中等待執行。

此時回調函數的執行時間,被設定為從 0s 到 4s。

又因為通過 var 聲明的 i 變量并不是在 for 循環中,而是在聲明的方法體內,在例子中是則是在全局作用域。

所以在 for 循環執行結束后,全局作用域的 i = 5

而到隊列任務執行時,所有隊列任務中執行的 console.log(i) 中都是訪問全局函數中的 i。

所以結果就是:每隔 1 秒,控制臺輸出一個 5。

閉包

而想按順序輸出 1 到 5,以前會使用閉包

web前端一次性定時器怎么寫(前端面試題?JavaScript?定時器)(3)

上面通過聲明一個自執行的匿名函數,當循環時候,創建出 5 個閉包,每個閉包內的變量 i是循環時傳進去的 i 值。

當隊列任務被調用時,console.log(i) 為對應的閉包內的變量 i。

let

在 ES6 中,通過關鍵字 let,可以創建出塊級作用域。產生和閉包一樣的效果。

web前端一次性定時器怎么寫(前端面試題?JavaScript?定時器)(4)

定時器參數

觀察下列代碼,控制臺會怎樣的輸出呢?

web前端一次性定時器怎么寫(前端面試題?JavaScript?定時器)(5)

控制臺會立即輸出 0 至 4。而不是間隔 1 秒輸出 0 到 4。

因為 console.log(i) 已經是調用函數的形式,而不是一個函數句柄。所以在執行循環時候,就同時執行 console.log(i)。

那么,應該怎樣修改呢?

web前端一次性定時器怎么寫(前端面試題?JavaScript?定時器)(6)

setTimeout() 首個參數接收回調函數,第二個參數接收延時時間。

我們可能會忽略,setTimeout() 的后續參數都是作為附加參數,在定時器到期時候,傳到回調函數中。

所以,只需要在附加參數中傳進 i 即可。

結語

今天的內容較為簡單,可能很多朋友都已經了解。這些都算是面試中的開胃菜,不得不會,千萬別陰溝里翻船。

覺得不錯的幫忙點個贊吧,歡迎評論區討論。

歡迎分享轉載→http://www.avcorse.com/read-234942.html

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖