国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

JavaScript 引擎的運行原理是什么

發(fā)布時(shí)間:2021-07-04 20:13 來(lái)源:億速云 閱讀:0 作者:Leah 欄目: 開(kāi)發(fā)技術(shù)

這篇文章將為大家詳細講解有關(guān)JavaScript 引擎的運行原理是什么,文章內容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

注意:本文主要基于 Node.js 和基于 Chrome 的瀏覽器使用的 V8 引擎。

HTML解析器遇到帶有源代碼的script標簽。來(lái)自此源的代碼從網(wǎng)絡(luò ),緩存或已安裝的服務(wù)工作程序中加載。響應是將請求的腳本作為字節流,由字節流解碼器負責。字節流解碼器在下載字節流時(shí)對其進(jìn)行解碼。

字節流解碼器從已解碼的字節流中創(chuàng )建令牌。例如,0066解碼為f, 0075到u,006e到n, 0063到c, 0074到t, 0069到i,  006f到o, 006e到n,后面跟一個(gè)空格。就像JS中的function,這是 JS  中的一個(gè)保留關(guān)鍵字,它會(huì )創(chuàng )建一個(gè)標記,并將其發(fā)送給解析器。對于字節流的其余部分也是如此。

該引擎使用兩個(gè)解析器:預解析器(pre-parser)和解析器(parser)。預解析器只提前檢查標記,以查看是否有語(yǔ)法錯誤。這可以減少發(fā)現代碼中的錯誤所需的時(shí)間,否則解析器稍后就會(huì )發(fā)現這些錯誤。

如果沒(méi)有錯誤,解析器將根據從字節流解碼器接收到的標記創(chuàng )建節點(diǎn)。使用這些節點(diǎn),它創(chuàng )建了一個(gè)抽象語(yǔ)法樹(shù),即AST。

接下來(lái),輪到解釋器(interpreter)了。遍歷AST并根據AST包含的信息生成字節碼的解釋器。一旦字節碼完全生成,AST就會(huì )被刪除,從而清除內存空間。最后,生成的機器碼就可以在電腦上運行了。

雖然字節碼很快,但它可以更快。當這個(gè)字節碼運行時(shí),將生成信息。它可以檢測某些行為是否經(jīng)常發(fā)生,以及所使用數據的類(lèi)型。也許已經(jīng)調用一個(gè)函數幾十次了:現在是時(shí)候優(yōu)化它了,這樣它會(huì )運行得更快!

字節碼與生成的類(lèi)型反饋一起發(fā)送到優(yōu)化編譯器(ptimizing  compiler)。優(yōu)化的編譯器接收字節碼和類(lèi)型反饋,并根據這些信息生成高度優(yōu)化的機器碼。

JS 是一種動(dòng)態(tài)類(lèi)型語(yǔ)言,這意味著(zhù)數據類(lèi)型可以不斷變化。如果 JS引擎每次都要檢查某個(gè)值的數據類(lèi)型,那么速度會(huì )非常慢。

相反,JS 引擎使用一種稱(chēng)為內聯(lián)緩存(inline  caching)的技術(shù)。它將代碼緩存在內存中,希望將來(lái)它會(huì )以相同的行為返回相同的值.假設某個(gè)函數被調用100次,并且到目前為止總是返回相同的值。它將假設在第101次調用它時(shí)也會(huì )返回這個(gè)值。

假設我們有以下函數sum,(到目前為止)每次都使用數值作為參數來(lái)調用它:

ffunction sum(a, b){  return a + b}sum(1, 2

執行結果為 3。下次調用它時(shí),它將假定我們再次使用兩個(gè)相同數字對其進(jìn)行調用。

如果假投,那么就不需要動(dòng)態(tài)查找,只需要使用存儲在特定內存槽中的結果,該槽已經(jīng)有一個(gè)引用。否則,如果假設不正確,它將反優(yōu)化代碼并恢復到原始字節碼,而不是優(yōu)化后的機器碼。

例如,下一次調用它時(shí),我們傳遞的是字符串而不是數字。因為 JS 是動(dòng)態(tài)類(lèi)型的,所以這樣做不會(huì )有任何錯誤。

function sum(a, b){ return a + b}sum('1', 2)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

女人18毛片水真多免费看| 又摸又揉又黄又爽的视频| 乱子真实露脸刺激对白| 亚 洲 成 人 网站在线观看| 亚洲精品国产成人AV| 热久久美女精品天天吊色|