Skip to the content.

执行上下文

  1. 执行上下文的概念

    • 执行上下文是一个抽象概念,一个 js 代码运行环境的抽象概念
    • 任何 js 代码都是运行在执行上下文里面的
    • 变量或函数的执行上下文决定它们可以访问哪些数据,以及它们的行为
    • 每个上下文都有一个关联的变量对象(variable object), 而这个上下文中定义的所有变量和函数都存在于这个对象上(这个变量对象是无法被代码访问到的)
  2. 全局上下文 全局上下文是最外层的上下文,在浏览器中指的就是 window 对象,所有用 var 定义的全局变量和函数都会挂在 window 上 但是,let 和 const 的顶级声明不会挂在全局上下文上

  3. 上下文栈

    • 每一个局部作用域都有自己的上下文(不知道准不准确,js 高级编程中写的是每个函数),当代码执行流进入局部作用域时,这个局部作用域的上下文就会被推到一个上下文栈上
    • 局部作用域的代码执行完成后,上下文栈就会 pop 这个局部作用域的上下文,这个上下文中定义的所有变量和函数就会被销毁

作用域链

作用域链增强