日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

這一次,徹底解決面試中看代碼說結果的問題!

來源: 責編: 時間:2024-05-20 17:56:32 206觀看
導讀Hello,大家好,我是 Sunday。【看代碼說結果】一直是前端面試中的常見問題。最近在陪幾個同學面試過程中,幾乎每個中、大廠的面試都會遇到一個或幾個這樣的問題。雖然這樣的問題如此高頻,但是能夠回答好的同學卻寥寥無幾。

Hello,大家好,我是 Sunday。xY328資訊網——每日最新資訊28at.com

【看代碼說結果】一直是前端面試中的常見問題。最近在陪幾個同學面試過程中,幾乎每個中、大廠的面試都會遇到一個或幾個這樣的問題。xY328資訊網——每日最新資訊28at.com

陪同學面試中遇到的真題xY328資訊網——每日最新資訊28at.com

雖然這樣的問題如此高頻,但是能夠回答好的同學卻寥寥無幾。xY328資訊網——每日最新資訊28at.com

每次事后跟同學溝通,得到的結果都是:“實際開發中沒有這么寫的,NND 奇葩面試題!” 大家是不是也會有相同的感受呢?xY328資訊網——每日最新資訊28at.com

是的!實際開發中我們肯定不會寫出面試題里的凌亂場景。但是,我們不要忘記,學習的目的是:為了拿到更高薪資的 offer!,所以對很多同學而言 面試 比 實際開發 更重要! 只有很好的解決了 面試 的問題,大家才可以拿到滿意的 offer。xY328資訊網——每日最新資訊28at.com

所以,解決【看代碼說結果】的問題就變得至關重要了。那么咱們今天,就好好地來聊聊 JS 中的執行機制問題,幫大家徹底理解 JS 的執行邏輯!xY328資訊網——每日最新資訊28at.com

關于 JavaScript 線程基礎邏輯

JavaScript 是一種單線程語言。xY328資訊網——每日最新資訊28at.com

雖然最新的 HTML5 中引入了 Web Worker,但 JavaScript 單線程的核心保持不變。xY328資訊網——每日最新資訊28at.com

因此,JavaScript中所有的“多線程”都是用單線程模擬的,JavaScript中的所有多線程都是騙人的!xY328資訊網——每日最新資訊28at.com

JavaScript 事件循環

由于 JavaScript 是單線程的,它就像一家只有一個窗口的銀行,客戶需要一一排隊來處理交易。xY328資訊網——每日最新資訊28at.com

同樣,JavaScript 任務也需要按順序執行,一個接一個。如果一項任務花費太長時間,則下一項任務必須等待。xY328資訊網——每日最新資訊28at.com

那么問題就來了:如果我們想瀏覽新聞,但新聞中的高清圖片加載緩慢,我們的網頁是否要一直卡住,直到圖片完全顯示出來?xY328資訊網——每日最新資訊28at.com

因此,JS將任務分為兩類:xY328資訊網——每日最新資訊28at.com

  • 同步任務
  • 異步任務

當我們打開一個網站時,網頁的渲染過程由一堆同步任務組成,例如:骨架屏幕、頁面元素。xY328資訊網——每日最新資訊28at.com

消耗大量資源且需要很長時間才能完成的任務(例如:加載圖像、音樂文件)則是異步的。xY328資訊網——每日最新資訊28at.com

圖片圖片xY328資訊網——每日最新資訊28at.com

  • 同步和異步任務進入不同的執行“地方”,同步任務進入主線程,異步任務進入事件表并注冊函數。
  • 當指定的任務完成時,事件表會將這個函數移動到事件隊列中。
  • 主線程內的任務完成后,會從Event Queue中讀取相應的函數并在主線程中執行。
  • 上述過程會不斷重復,通常稱為事件循環。

那么 JS 是如何知道主線程為空的呢?xY328資訊網——每日最新資訊28at.com

在 JavaScript 引擎有一個監控進程,不斷檢查主線程執行棧是否為空。一旦為空,它就會去事件隊列檢查是否有任何函數正在等待調用。xY328資訊網——每日最新資訊28at.com

如下面的代碼所示:xY328資訊網——每日最新資訊28at.com

let data = [];$.ajax({    url:www.lgdsunday.club,    data:data,    success:() => {        console.log('發送成功!');    }})console.log('代碼執行完成');

上面是一個簡單的ajax請求代碼:xY328資訊網——每日最新資訊28at.com

  • ajax進入事件表并注冊回調函數success。
  • 執行console. log(‘發送成功!’)。
  • ajax事件完成,回調函數成功進入事件隊列。
  • 主線程success從事件隊列中讀取并執行回調函數。

通過上面的文字和代碼,大家應該對JavaScript中的執行順序有了初步的了解了吧。xY328資訊網——每日最新資訊28at.com

那么接下來咱們來看一個 擾亂執行順序的 “元兇” setTimeout。xY328資訊網——每日最新資訊28at.com

萬惡的 setTimeout

setTimeout 可以延遲執行代碼,比如:xY328資訊網——每日最新資訊28at.com

setTimeout(() => {    task();},3000)console.log('一個普通的打印');

根據我們之前的結論,setTimeout是異步的。所以,同步任務console.log應該先執行。因此,我們的結論是:xY328資訊網——每日最新資訊28at.com

// 一個普通的打印// task()

但是,這里我們要注意 3000 毫秒并不是 task 的執行時間,而是 task 進入任務隊列(主線程)的時間xY328資訊網——每日最新資訊28at.com

  • 3秒后,計時事件timeout完成。
  • task()進入任務隊列(主線程)

那么同樣的道理,在面試中常見的 setTimeout(fn, 0) 的延遲 0 毫秒 是什么意思呢?xY328資訊網——每日最新資訊28at.com

setTimeout(fn ,0)是指定當堆棧中的所有同步任務完成且堆棧變空時,應在主線程上最早可用的空閑時間執行某個任務,而不需要等待任何額外的秒數。xY328資訊網——每日最新資訊28at.com

所以,setTimeout(fn, 0) 并不會立刻執行。xY328資訊網——每日最新資訊28at.com

宏任務與微任務

宏任務與微任務的概念在這種題目中也是必須要掌握的。xY328資訊網——每日最新資訊28at.com

  • 宏任務:包括整體腳本代碼、setTimeout、setInterval
  • 微任務:Promise、process.nextTick

事件循環中事件的順序決定了JavaScript代碼的執行順序。xY328資訊網——每日最新資訊28at.com

  • 輸入整個腳本(宏任務)后,它開始第一個循環
  • 然后它執行所有微任務。接下來,又從宏任務開始,直到一個任務隊列完成后,才再次執行所有的微任務

我們通過一段代碼來看下這個問題:xY328資訊網——每日最新資訊28at.com

setTimeout(function() {    console.log('setTimeout');})new Promise(function(resolve) {    console.log('promise');}).then(function() {    console.log('then');})console.log('console');
  • 這段代碼作為宏任務,進入主線程。
  • 當遇到 setTimeout 時,其回調函數被注冊并調度到宏任務事件隊列中。 (注冊流程同上,下文不再贅述)。
  • 接下來,當遇到 Promise 時,new Promise立即執行,并將該then函數分派到微任務事件隊列中。
  • 當遇到 console.log() 時,立即執行。
  • 在將整個腳本作為第一個宏任務執行之后。我們發現它 then 位于微任務事件隊列中并被執行。
  • 第一輪事件循環結束。
  • 第二輪循環開始;當然是從宏任務Event Queue開始。隊列中對應setTimeout的回調函數立即被執行。
  • 結尾。

本文鏈接:http://m.www897cc.com/showinfo-26-89413-0.html這一次,徹底解決面試中看代碼說結果的問題!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 我發現了大廠OpenApi接口的bug!你發現了嗎?

下一篇: 入門賽車模擬器新標桿!MOZA 發布 3.9 牛米伺服直驅套裝

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
日韩视频精品在线| 国产精品久久久久久久电影 | 欧美日韩一区二区在线| 欧美国产视频在线| 国产精品www色诱视频| 国产精品护士白丝一区av| 国产日本欧美一区二区| 国内精品久久久久影院 日本资源| 在线观看国产一区二区| 亚洲伦理自拍| 香蕉亚洲视频| 欧美国产日韩视频| 国产精品国产a| 欲色影视综合吧| 日韩一二三区视频| 欧美一区二区在线看| 老鸭窝91久久精品色噜噜导演| 欧美日本精品在线| 国产一区二区观看| 亚洲激情在线视频| 欧美亚洲视频在线观看| 欧美国产日韩在线| 国产色视频一区| 日韩天堂av| 久久另类ts人妖一区二区| 欧美日韩在线第一页| 影音先锋成人资源站| 中国成人亚色综合网站| 鲁大师成人一区二区三区| 国产精品白丝av嫩草影院| 黑人一区二区| 亚洲色图自拍| 免费成人毛片| 国产精品亚洲第一区在线暖暖韩国| 亚洲国产成人精品视频| 羞羞视频在线观看欧美| 欧美激情亚洲激情| 国产自产高清不卡| 亚洲尤物在线视频观看| 欧美精品aa| 黄色成人91| 亚洲欧美日韩国产综合精品二区| 欧美成在线视频| 国产一区二三区| 99视频日韩| 欧美91精品| 狠狠88综合久久久久综合网| 亚洲欧美综合v| 欧美日韩国产一级片| 在线观看视频免费一区二区三区| 午夜精品久久久久久久久久久久久 | 欧美三级网址| 亚洲国内自拍| 久久九九热免费视频| 国产精品扒开腿做爽爽爽视频| 亚洲国产成人久久综合一区| 久久久久99精品国产片| 国产欧美不卡| 亚洲香蕉网站| 欧美区在线观看| 亚洲黄页视频免费观看| 久久精品亚洲一区| 国产亚洲成av人在线观看导航 | 国产精品影院在线观看| 一区二区国产日产| 欧美成人国产| 亚洲高清激情| 可以看av的网站久久看| 国户精品久久久久久久久久久不卡| 亚洲伊人第一页| 欧美天堂亚洲电影院在线观看 | 一区免费在线| 久久久久久亚洲精品不卡4k岛国| 国产女人18毛片水18精品| 亚洲视频一二区| 欧美日韩激情网| 亚洲精品乱码久久久久久黑人| 农村妇女精品| 亚洲第一区在线| 免费av成人在线| 亚洲国产精选| 欧美国产日本在线| 亚洲人成网站影音先锋播放| 欧美电影免费观看| 亚洲欧洲综合另类| 欧美日韩国产精品专区| 一区二区三区精品视频在线观看| 欧美日韩亚洲综合一区| 中文网丁香综合网| 国产精品美女主播在线观看纯欲| 亚洲欧美日韩天堂| 国产日韩欧美成人| 久久久久久成人| 在线看不卡av| 欧美国产日本| 在线一区二区三区四区五区| 国产精品成人一区二区三区吃奶| 亚洲欧美综合| 精品91免费| 欧美ed2k| 这里只有精品电影| 国产欧美日韩一区二区三区在线观看 | 91久久精品国产91久久性色tv| 欧美激情综合色| 亚洲婷婷综合色高清在线| 国产精品日韩欧美一区二区三区| 欧美中文在线观看| 在线欧美日韩| 欧美日韩视频第一区| 亚洲欧美激情精品一区二区| 国内成+人亚洲| 欧美国内亚洲| 亚洲资源在线观看| 国内精品国产成人| 欧美交受高潮1| 亚洲欧美日韩精品久久| 一区在线免费| 欧美日韩日本国产亚洲在线 | 国产精品h在线观看| 久久精品国产欧美亚洲人人爽| 亚洲狠狠丁香婷婷综合久久久| 国产精品av久久久久久麻豆网| 欧美中文在线观看| 亚洲片在线观看| 国产精品久久久久9999吃药| 久久精品国产在热久久| 亚洲精品日韩欧美| 国产日韩在线视频| 欧美国产激情二区三区| 亚洲欧美日韩国产| 亚洲国产一区在线| 国产精品美女www爽爽爽| 久久中文精品| 在线综合+亚洲+欧美中文字幕| 国产中文一区二区| 欧美日韩国产在线一区| 久久精品99无色码中文字幕| 亚洲精品视频在线观看网站 | 亚洲一区视频在线| 在线观看欧美视频| 国产精品毛片a∨一区二区三区|国 | 中文国产亚洲喷潮| 激情欧美一区二区| 国产精品福利影院| 牛牛精品成人免费视频| 亚洲欧美日本精品| 亚洲欧洲一二三| 国产亚洲在线| 欧美视频三区在线播放| 久久在线免费观看视频| 亚洲综合色在线| 亚洲人体一区| 国外成人在线视频| 国产精品v亚洲精品v日韩精品| 毛片一区二区三区| 欧美中文在线观看国产| 中文高清一区| 亚洲美洲欧洲综合国产一区| 一区二区亚洲| 国产女主播一区二区| 欧美日韩hd| 免费视频一区| 久久精品国内一区二区三区| 亚洲视频欧美在线| 亚洲另类一区二区| 亚洲高清久久久| 国产主播一区二区三区四区| 国产精品久久久久久久久搜平片| 欧美激情精品久久久久久大尺度| 久久久精品一区| 欧美一区激情视频在线观看| 亚洲一区二区少妇| 日韩亚洲国产欧美| 亚洲国产天堂久久综合网| 国语精品一区| 国产视频久久久久久久| 国产精品―色哟哟| 国产精品高潮久久| 欧美日韩在线免费| 欧美日韩国产探花| 欧美日本久久| 欧美精品一区二区视频| 欧美成人性网| 欧美不卡一区| 免费国产一区二区| 久久影院亚洲| 久久亚洲综合色一区二区三区| 久久国产精品黑丝| 欧美在线观看视频在线| 欧美一区1区三区3区公司| 午夜国产精品影院在线观看| 亚洲在线第一页| 亚洲欧美精品伊人久久| 亚洲综合视频网| 亚洲男人的天堂在线| 亚洲一区一卡| 亚洲欧美日韩中文视频| 亚洲欧美在线视频观看| 午夜精品久久久久久久久久久| 午夜精品久久久久99热蜜桃导演| 亚洲欧美欧美一区二区三区| 亚洲综合三区| 午夜精品福利一区二区三区av| 午夜精品理论片|