JS 执行上下文的生命周期阶段有哪些【热度: 713】

关键词:JS 执行阶段、JS执行上下文生命周期

在JavaScript中,执行上下文的生命周期可以分为三个阶段:创建阶段(Creation phase)、执行阶段(Execution phase)和回收阶段(Cleanup phase)。

  1. 创建阶段(Creation phase):

    • 在创建阶段,JavaScript引擎会做以下工作:
      • 创建变量对象(Variable
        object):变量对象是执行上下文中的一个重要部分,用于存储变量和函数声明。在该阶段,JavaScript引擎会扫描当前上下文中的代码,并创建变量对象。变量对象包括函数的参数、函数声明和变量声明。对于全局上下文,变量对象是全局对象(如window
        对象)。
      • 建立作用域链(Scope chain):作用域链用于解析变量的访问权限。JavaScript引擎会根据当前执行上下文的词法环境和作用域嵌套关系来建立作用域链。
      • 确定this值:在创建阶段,JavaScript引擎会确定this关键字的值,这取决于函数的调用方式(如函数调用、方法调用、构造函数调用等)。
  2. 执行阶段(Execution phase):

    • 在执行阶段,JavaScript引擎会按照代码的顺序执行语句,执行以下操作:
      • 变量赋值:根据代码中的赋值操作,给变量分配内存并赋予相应的值。
      • 函数引用:根据代码中的函数调用,将函数的引用添加到变量对象中。
      • 代码执行:按照代码的顺序执行语句,包括表达式计算、条件判断、循环等操作。
      • 创建局部变量:当函数内部存在局部变量时,在执行到相应代码行时,会为局部变量分配内存空间。
  3. 回收阶段(Cleanup phase):

    • 在回收阶段,JavaScript引擎会进行垃圾回收和释放内存等清理工作。当执行上下文不再被引用或执行完毕后,会触发回收阶段,进行以下操作:
      • 解除引用:将执行上下文中的变量和函数从变量对象中移除,解除对它们的引用。
      • 内存回收:对不再被引用的变量和对象进行垃圾回收,释放占用的内存空间。

这三个阶段共同构成了执行上下文的生命周期。创建阶段主要用于初始化执行上下文的变量和函数,建立作用域链和确定this值。执行阶段是实际执行代码的阶段,按照代码顺序执行语句。回收阶段主要用于清理执行上下文,释放内存空间。这个生

命周期的循环会在代码的执行过程中反复进行,直到所有的代码都执行完毕并且没有引用指向该执行上下文时,执行上下文将被彻底回收。