搜尋
首頁web前端js教程帶你了解JavaScript的運作原理

本篇文章為大家帶來了關於javascript的相關知識,主要介紹了關於JavaScript的運作原理,本文為大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鏡價值,需要的朋友可以參考下。

帶你了解JavaScript的運作原理

【相關推薦:javascript影片教學web前端

了解JavaScript 是如何運作的,以及的它的運作機制,首先,我們要了解瀏覽器的核心:

瀏覽器核心

了解的都知道:不同的瀏覽器是由不同的核心組成,那麼有哪些核心以及我們常用的瀏覽器都使用了那些核心:

  • Gecko:早期被Netscape和Mozilla Firefox瀏覽器瀏覽器使用;
  • Trident:微軟開發,被IE4~IE11瀏覽器使用,但Edge瀏覽器已經轉向Blink;
  • Webkit:蘋果基於KHTML開發、開源的,用於Safari,Google Chrome之前也在使用;
  • Blink :是Webkit的一個分支,Google開發,目前應用於Google Chrome、Edge、Opera等;

所謂瀏覽器內核,指的是瀏覽器的排版引擎,也就是瀏覽器引擎。引擎的工作執行流程如下:

帶你了解JavaScript的運作原理

但是在這個執行過程中,HTML解析的時候遇到了JavaScript標籤,該怎麼辦呢?
會停止解析HTML,而去載入並執行JavaScript程式碼;

#當然,為什麼不直接非同步去載入執行JavaScript程式碼,而要在這裡停止掉呢?

所以瀏覽器希望將HTML解析的DOM和JavaScript操作之後的DOM放在一起來產生最終的DOM樹,而不是頻繁的去生成新的DOM樹;

那麼, JavaScript程式碼由誰來執行呢?
答案:JavaScript 引擎

JavaScript 引擎

為什麼需要JavaScript引擎呢?

  • #事實上我們寫的JavaScript無論你交給瀏覽器或Node執行,最後都是需要被CPU執行的;
  • 但是CPU只認識自己的指令集,實際上是機器語言,才能被CPU執行;
  • 所以我們需要JavaScript引擎幫助我們將JavaScript程式碼翻譯成CPU指令來執行;
##常見的JavaScript 引擎有哪些呢?

    SpiderMonkey:第一款JavaScript引擎,由Brendan Eich開發(也就是JavaScript作者);
  • Chakra:微軟開發,用於IE瀏覽器;
  • JavaScriptCore:WebKit中的JavaScript引擎,Apple公司開發;
  • V8:Google開發的強大JavaScript引擎,也幫助Chrome從眾多瀏覽器中脫穎而出;(V8 是一個強大的JavaScript 引擎)
V8 引擎

    V8是用C 寫的Google開源高效能JavaScript和WebAssembly引擎,它用於Chrome和Node.js等。
  • 它實作ECMAScript和WebAssembly,並在Windows 7或更高版本,macOS 10.12 和使用x64,IA-32,ARM或MIPS處理器的Linux系統上運作。
  • V8可以獨立運行,也可以嵌入到任何C 應用程式中。
V8 引擎執行JavaScript 程式碼的原理:

Parse模組會將JavaScript程式碼轉換成AST(抽象語法樹),這是因為解釋器並沒有直接認識- JavaScript程式碼;

     如果函數沒有被調用,那麼是不會被轉換成AST的;
  • Parse的V8官方文件:https://v8.dev/blog/scanner
Ignition是一個解釋器,會將AST轉換成ByteCode(字節碼)

    同時會收集TurboFan優化所需的資訊(例如函數參數的類型信息,有了類型才能進行真實的運算);
  • 如果函數只呼叫一次,Ignition會執行解釋執行ByteCode;
  • Ignition的V8官方文件:https://v8.dev/ blog/ignition-interpreter
TurboFan是一個編譯器,可以將字節碼編譯為CPU可以直接執行的機器碼;

    如果一個函式被多次調用,那麼就會被標記為熱點函數,那麼就會經過TurboFan轉換成優化的機器碼,提高程式碼的執行效能;
  • 但是,機器碼實際上也會被還原為ByteCode,這是因為如果後續執行函數的過程中,類型發生了變化(例如sum函數原來執行的是number類型,後來執行變成了string類型),之前優化的機器碼並不能正確的處理運算,就會逆向的轉換成字節碼;
  • TurboFan的V8官方文件:https://v8.dev/blog/turbofan-jit
上面是JavaScript程式碼的執行過程

【相關推薦:javascript影片教學web前端

以上是帶你了解JavaScript的運作原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:脚本之家。如有侵權,請聯絡admin@php.cn刪除
Python vs. JavaScript:開發人員的比較分析Python vs. JavaScript:開發人員的比較分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

Python vs. JavaScript:選擇合適的工具Python vs. JavaScript:選擇合適的工具May 08, 2025 am 12:10 AM

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript:了解每個的優勢Python和JavaScript:了解每個的優勢May 06, 2025 am 12:15 AM

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

JavaScript的核心:它是在C還是C上構建的?JavaScript的核心:它是在C還是C上構建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架:為現代網絡開發提供動力JavaScript框架:為現代網絡開發提供動力May 02, 2025 am 12:04 AM

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

JavaScript,C和瀏覽器之間的關係JavaScript,C和瀏覽器之間的關係May 01, 2025 am 12:06 AM

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具