JavaScript中执行上下文的理解

40 阅读2分钟

JavaScript中执行上下文是指代码在运行时的环境,包括变量、函数、对象等的创建和存储的过程。执行上下文可以分为全局执行上下文和函数执行上下文。

  1. 全局执行上下文:

    • 在脚本开始执行时,会创建一个全局执行上下文。
    • 全局执行上下文中包含全局对象(如window对象)以及全局变量和函数。
    • 在全局执行上下文中,JavaScript会将全局变量和函数声明提升(即在代码执行前就创建并存储起来),但是变量的赋值操作会在代码执行时进行。
  2. 函数执行上下文:

    • 每当一个函数被调用时,都会创建一个函数执行上下文。
    • 函数执行上下文中包含函数的参数、局部变量和函数声明。
    • 每当一个函数执行完毕,它的执行上下文都会被销毁,回到调用该函数的上下文中。

执行上下文的创建过程包括以下步骤:

  1. 创建变量对象(Variable Object):

    • 全局上下文中的变量对象是全局对象(如window对象)。
    • 函数上下文中的变量对象包括函数的参数和局部变量。
  2. 建立作用域链(Scope Chain):

    • 作用域链是一个指向外部环境的指针列表,用于解析标识符的变量查找。
    • 在函数创建时,会将当前的变量对象添加到函数的作用域链中。
  3. 确定this值:

    • this值是在函数调用时确定的,它指向调用该函数的对象。
  4. 执行代码:

    • 执行上下文中的代码。

总结起来,执行上下文是JavaScript中的一个重要概念,它决定了代码的运行环境以及变量和函数的访问规则。对于每个函数和全局代码,JavaScript引擎都会在执行前创建一个执行上下文,并按照特定的规则进行管理和销毁。