深入了解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对变量赋值时变量被用到, 此时变量对象会转为活动对象, 转换后的活动对象才可被访问)
这就引出了两个概念:“执行上下文” 和 “作用域链” 。

    推荐阅读