执行上下文(Execution Context)

4 阅读1分钟

控制器转到可执行代码时,会进入一个执行上下文,可理解为当前代码的执行环境,它会形成一个作用域。

JS中的运行环境大概包括三种情况

  • 全局环境:JavaScript代码运行起来会首先进入该环境
  • 函数环境:当函数被调用执行时,会进入当前函数中执行代码
  • eval(不建议使用,可忽略)

JS引擎以栈的方式来处理js程序中的多个执行上下文,这个栈称为函数调用栈。栈底永远是全局上下文,栈顶是正在执行的上下文。

生成执行上下文 → 放入栈中 → 栈顶的执行上下文执行完毕后 → 自动出栈

执行上下文可以理解为函数执行的环境,每一个函数执行时,都会给对应的函数创建这样一个执行环境。

全局上下文在浏览器窗口关闭后出栈。

注意:函数中,遇到return能直接终止可执行代码的执行,因此会直接将当前上下文弹出栈。

结论

  1. 单线程
  2. 同步执行,只有栈顶的上下文处于执行中,其他上下文需要等待
  3. 全局上下文只有唯一的一个,它在浏览器关闭时出栈
  4. 函数的执行上下文的个数没有限制
  5. 每次某个函数被调用,就会有个新的执行上下文为其创建,即使是调用的自身函数,也是如此。