首頁  >  文章  >  web前端  >  JS引擎運作時是什麼樣的

JS引擎運作時是什麼樣的

php中世界最好的语言
php中世界最好的语言原創
2017-12-04 13:49:142236瀏覽

我們知道,所謂的JavaScript引擎是專門處理JavaScript腳本的虛擬機,通常會附帶在網頁瀏覽器中,用於解析和執行JavaScript腳本。那麼今天就來詳細解析一下JS引擎運作時是什麼樣的。

JavaScript虛擬機是一種流程虛擬機,它具備的一個特性就是有一個虛擬的指令集(ISA)。

  JavaScript 引擎說起來最流行的當然是谷歌的V8 引擎了, V8 引擎使用在Chrome 以及Node 中,但與其他JavaScript引擎不一樣的是,V8這種只用JIT編譯器,不用解譯器來執行JavaScript的實作。下面有個簡單的圖能說明他們的關係:

這個引擎主要由兩部分組成:

記憶體堆:這是記憶體分配發生的地方調用堆疊:這是你的程式碼執行時的地方

運行時

  有些瀏覽器的API 經常被使用到(比如說:setTimeout),但是,這些API 卻不是引擎提供的。那麼,他們是從哪裡來的呢?事實上這裡面實際情況有點複雜。

  上圖中,主執行緒運行的時候,產生堆疊(heap)和堆疊(stack),堆疊中的程式碼呼叫各種外部API,它們在」任務佇列」中加入各種事件(click,load,done)。只要堆疊中的程式碼執行完畢,主執行緒就會去讀取”任務佇列”,依序執行那些事件所對應的回呼函數

  執行堆疊中的程式碼(同步任務),總是在讀取」任務佇列」(非同步任務)之前執行。

  除了放置非同步任務的事件,」任務佇列」還可以放置定時事件,即指定某些程式碼在多少時間之後執行。

  所以說我們還有很多引擎以外的 API,我們把這些稱為瀏覽器提供的 Web API,比如說 DOM、AJAX、setTimeout等等。

  綜上,形象的來說JavaScript引擎就是一台可以工作的機器,而JavaScript虛擬機就是這台機器的執行核心,JavaScript運行時就是機器。


相信看了這些案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

相關閱讀:

前端的js框架總結以及用途講解

JS開發中jssplice()方法如何使用

html5中的DOM程式設計的實作步驟

#

以上是JS引擎運作時是什麼樣的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn