欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JavaScript的運作原理是怎樣的

JavaScript的運作原理是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)由有經(jīng)驗的網(wǎng)站設(shè)計師、開發(fā)人員和項目經(jīng)理組成的專業(yè)建站團隊,負責網(wǎng)站視覺設(shè)計、用戶體驗優(yōu)化、交互設(shè)計和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、做網(wǎng)站、網(wǎng)站建設(shè)易于使用并且具有良好的響應(yīng)性。

讓我們從瀏覽器理解的語言開始。

瀏覽器僅理解0和1s語言,即二進制/位格式的語句。

我們無法輕松地將整個JavaScript轉(zhuǎn)換為位。那么,我們現(xiàn)在該怎么辦???

JavaScript引擎:- “嘿,不用擔心,我可以為您提供JavaScript文件?!?/p>

那么什么是JavaScript引擎?

當將JavaScript文件加載到瀏覽器中時,JavaScript  Engine會從上到下逐行執(zhí)行該文件(異步代碼將是一個例外,我們將在本系列后面的內(nèi)容中看到異步代碼)。

JavaScript引擎將逐行解析代碼并將該代碼轉(zhuǎn)換為機器代碼(二進制/位格式)。

現(xiàn)在,瀏覽器可以理解該機器代碼并相應(yīng)地運行。

這是一些JS引擎示例。

JavaScript的運作原理是怎樣的

那么這個javascript引擎里面是什么?

這是JavaScript引擎的非?;镜囊晥D。

JavaScript的運作原理是怎樣的

內(nèi)存堆

JavaScript引擎有時無法在編譯時分配內(nèi)存,因此在運行時分配的變量將進入內(nèi)存堆(內(nèi)存的非結(jié)構(gòu)化區(qū)域)。即使我們退出在堆中分配內(nèi)存的函數(shù),我們在堆部分中分配的數(shù)據(jù)/對象仍然存在。

在這里,我們面臨一個主要的內(nèi)存泄漏問題。

那么什么是內(nèi)存泄漏?

內(nèi)存堆的空間有限。如果我們繼續(xù)使用堆空間而不關(guān)心釋放未使用的內(nèi)存。當堆中沒有更多可用內(nèi)存時,這將導致內(nèi)存泄漏問題。

為了解決此問題,javascript引擎引入了垃圾收集器。

什么是垃圾收集器?垃圾回收是內(nèi)存管理的一種形式。就像一個收集器,它試圖釋放不再使用的對象所占用的內(nèi)存。換句話說,當一個變量失去所有引用時,垃圾回收將該內(nèi)存標記為“無法訪問”并釋放它。

執(zhí)行上下文棧

堆棧是遵循后進先出(LIFO)原理的數(shù)據(jù)結(jié)構(gòu)(進入堆棧的最后一項將是要從堆棧中刪除的第一項)。

ECS存儲所有功能的執(zhí)行上下文。執(zhí)行上下文定義為存儲局部變量,函數(shù)和對象的對象。

簡而言之,每個功能都被推到袋子的頂部。

JavaScript引擎執(zhí)行此堆棧頂部的功能。

由于JavaScript引擎只有一個ECS,因此一次只能執(zhí)行一件事情,這是ECS的頂部。這就是使JavaScript單線程的原因。

您一定聽說過堆棧溢出。

這意味著什么?-ECS的空間也有限。因此,如果我們繼續(xù)在堆棧頂部添加功能。在某個時候,將沒有更多的空間來添加更多的堆??蚣堋T谶@一點上,我們得到一個堆棧溢出錯誤。

考慮以下示例。

function heyJS() {     console.log("Hello you are awesome!!!!");     heyJS(); } heyJS();

JavaScript的運作原理是怎樣的

好吧,這進入了無限遞歸,并且我們有一個堆棧溢出錯誤。

JavaScript的運作原理是怎樣的

因此,正如我所提到的,JavaScript是一種簡單的線程語言,這意味著它只有一個調(diào)用堆棧廣告,因此一次只能執(zhí)行一個語句。

等等,我們也聽說過用JavaScript進行異步編程。那么,一次只允許一項任務(wù)時,該如何工作?

這是Web API的和回調(diào)隊列。

Web API

Web  API不是JS引擎的一部分,而是Web瀏覽器提供的JavaScript運行時環(huán)境的一部分。JavaScript只是為我們提供了一種訪問這些API的機制。由于Web  API是特定于瀏覽器的,因此它們可能因瀏覽器而異。在某些情況下,某些Web API可能存在于一個瀏覽器中,而沒有出現(xiàn)在另一瀏覽器中。

例子:-

document.getElementById(); document.addEventListerner(); setTimeOut(); setInterval(); 例:- console.log(“First!”);  setTimeout(() => {     console.log(“Second!”); }, 1000 );  console.log(“Third!”); /* OutPut:-  First Third Second */

很奇怪吧?

“第二”位于setTimeout內(nèi)部,因此將在1秒后執(zhí)行。

幕后到底發(fā)生了什么?

JavaScript的運作原理是怎樣的

JavaScript的運作原理是怎樣的

JavaScript的運作原理是怎樣的

1秒鐘后,WebAPI將得到通知,嘿,您有需要立即執(zhí)行的代碼。WebAPI  “哦,這是console.log(),我需要執(zhí)行它,但是我不能直接執(zhí)行它。讓我們將其發(fā)送到Callback Queue”  “嘿,這里是回調(diào)的Queue,請將其添加到列表中并執(zhí)行。”

回調(diào)隊列

回調(diào)隊列或消息隊列是遵循先進先出原則的隊列數(shù)據(jù)結(jié)構(gòu)(首先插入隊列的項目將首先從隊列中刪除)。它存儲所有從事件表移至事件隊列的消息。每個消息都有一個關(guān)聯(lián)的功能?;卣{(diào)隊列維護消息或方法在隊列中添加的順序。

事件循環(huán)

事件循環(huán)不斷檢查執(zhí)行上下文堆棧是否為空以及事件隊列中是否有任何消息。僅當執(zhí)行上下文堆棧為空時,才會將方法從回調(diào)隊列移至ECS。

回調(diào)隊列

“嘿,事件循環(huán)請檢查ECS是否為空。我有一些需要推送到ECS中的回調(diào)”。

事件循環(huán)

“隊列,請給我回調(diào),ECS現(xiàn)在為空,我將它們壓入堆棧以執(zhí)行它們?!?/p>

JavaScript的運作原理是怎樣的

最后,最后,我們將獲得輸出。

// First // Third // Second

這只是JavaScript引擎工作原理的概述。

我將在以后的一些文章中嘗試更深入地了解JavaScript引擎。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

網(wǎng)站名稱:JavaScript的運作原理是怎樣的
URL地址:http://aaarwkj.com/article24/gdeice.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、定制網(wǎng)站定制開發(fā)、企業(yè)網(wǎng)站制作品牌網(wǎng)站設(shè)計、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
九九视频在线精品免费观看| 国内精日韩欧中文的话| 青青久久精品国产亚洲av| 中文字幕人妻中文av不卡专区| 国产精品一区二区麻豆本子| 日本中文字幕免费一区| 青青草原精品资源视频| 亚洲日日夜夜噜噜爽爽| 午夜精品一区二区亚洲| 91精品日日躁夜夜躁欧美| 美女爽到高潮久久久| 亚洲国产日韩欧美在线播放| 青青草免费在线播放视频网站| 亚洲精品另类中文字幕| 性色视频一区二区三区| 激情av一区二区不卡| 欧美日韩国产成人一区| 高颜值美女后入内射视频| 九九热99这里有精品| 成年人午夜在线观看网址| 日韩精品视频在线不卡播放| 色欧美在线视频观看日韩| 91国内外精品自在线播放| 99热这里只有精品欧美| 日本东京热加勒比视频| 免费搜索国产男女视频| 精品在欧美一区二区少妇| 熟女人妻av五十路六十路| 国产黄色免费精品网站| 精品亚洲国产成人av| 亚洲精品美女久久久久高潮| 国产精品一品二区三区在线观看| 亚洲中文字幕乱码第一页| 扒开少妇毛茸茸的大荫萍蒂| 欧美日韩亚洲人人夜夜澡| 亚洲精品中文字幕日本乱码| 丝袜美腿诱惑国产在线| 日韩国产欧美亚州精品| 久久最新视频中文字幕| 国产精品久久乱码综合| 亚洲综合欧美日韩一区|