這篇文章主要講解了“JavaScript的運行原理怎么掌握”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JavaScript的運行原理怎么掌握”吧!
目前累計服務客戶成百上千,積累了豐富的產品開發及服務經驗。以網站設計水平和技術實力,樹立企業形象,為客戶提供成都網站制作、成都網站設計、網站策劃、網頁設計、網絡營銷、VI設計、網站改版、漏洞修補等服務。創新互聯建站始終以務實、誠信為根本,不斷創新和提高建站品質,通過對領先技術的掌握、對創意設計的研究、對客戶形象的視覺傳遞、對應用系統的結合,為客戶提供更好的一站式互聯網解決方案,攜手廣大客戶,共同發展進步。
了解JavaScript 是如何運行的,以及的它的運行機制,首先,我們要了解瀏覽器的內核:
了解過的都知道:不同的瀏覽器是由不同的內核組成,那么有哪些內核以及我們常用的瀏覽器都使用了那些內核:
Gecko:早期被Netscape和Mozilla Firefox瀏覽器瀏覽器使用;
Trident:微軟開發,被IE4~IE11瀏覽器使用,但是Edge瀏覽器已經轉向Blink;
Webkit:蘋果基于KHTML開發、開源的,用于Safari,Google Chrome之前也在使用;
Blink:是Webkit的一個分支,Google開發,目前應用于Google Chrome、Edge、Opera等;
所謂瀏覽器內核,指的是瀏覽器的排版引擎,即瀏覽器引擎。引擎的工作執行流程如下:
但是在這個執行過程中,HTML解析的時候遇到了JavaScript標簽,應該怎么辦呢?
會停止解析HTML,而去加載和執行JavaScript代碼;
當然,為什么不直接異步去加載執行JavaScript代碼,而要在這里停止掉呢?
所以瀏覽器希望將HTML解析的DOM和JavaScript操作之后的DOM放到一起來生成最終的DOM樹,而不是頻繁的去生成新的DOM樹;
那么,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是用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的運行原理怎么掌握這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!
當前文章:JavaScript的運行原理怎么掌握
文章出自:http://vcdvsql.cn/article32/iijppc.html
成都網站建設公司_創新互聯,為您提供關鍵詞優化、網站營銷、動態網站、微信小程序、虛擬主機、App設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯