深入了解JavaScript引擎如何執行JS代碼

本篇文章給大家帶來了關于javascript的相關知識, 其中主要介紹了js引擎如何執行js代碼的相關問題, js引擎在執行js代碼時, 也會從上到下進行詞法分析、語法分析、語義分析等處理, 并在代碼解析完成后生成AST, 希望對大家有幫助 。

深入了解JavaScript引擎如何執行JS代碼

文章插圖

相關推薦:javascript教程
我們大概經常能聽到“執行環境”、“作用域”、“原型(鏈)”、“執行上下文”等內容, 它們都在描述什么?
JS代碼的運行【深入了解JavaScript引擎如何執行JS代碼】我們知道了js是弱類型語言, 在運行時才確定變量類型 。 js引擎在執行js代碼時, 也會從上到下進行 詞法分析、語法分析、語義分析 等處理, 并在代碼解析完成后生成AST(抽象語法樹), 最終根據AST生成CPU可以執行的機器碼并執行 。
除此之外, JS引擎在執行代碼時還會進行其它處理, 如 V8 中還有兩個階段:
    編譯階段:該階段會進行執行上下文的創建, 包括創建變量對象(VO)(此時會被初始化為undefined)、建立作用域鏈、確定 this 指向等 。 每進入一個不同的運行環境 。 V8 都會創建一個新的執行上下文 。 執行階段:將編譯階段中創建的執行上下文壓入調用棧, 并成為正在運行的執行上下文 。 代碼執行結束后, 將其彈出調用棧 。 (這里有一個VO - AO的過程:JavaScript對變量賦值時變量被用到, 此時變量對象會轉為活動對象, 轉換后的活動對象才可被訪問)
這就引出了兩個概念:“執行上下文” 和 “作用域鏈” 。

    推薦閱讀