返回

解读JavaScript执行上下文:重学JavaScript深入理解系列(一)

前端

JavaScript执行上下文初探

每当控制器到达ECMAScript可执行代码的时候,控制器就进入了一个执行上下文。执行上下文(简称:EC) 以后出去要说EC因为够逼格😏 EC是个抽象的概念,ECMA-262标准中用它来区分不同类型的可执行代码。标准中并没有从技术实现的角度来定义可执行上下文的具体结构和类…

JavaScript执行上下文的类型

JavaScript执行上下文可以分为两种类型:

  • 全局执行上下文 :这是JavaScript程序的初始执行上下文,它在脚本或模块开始执行时创建,并在脚本或模块执行结束时销毁。全局执行上下文中的变量和函数都是全局变量和全局函数,可以在脚本或模块的任何地方访问。
  • 函数执行上下文 :这是在函数调用时创建的执行上下文,它在函数执行结束时销毁。函数执行上下文中的变量和函数都是局部变量和局部函数,只能在函数内部访问。

JavaScript执行上下文的结构

JavaScript执行上下文包括以下几个部分:

  • 变量环境 :变量环境包含了执行上下文中声明的所有变量和函数。
  • 作用域链 :作用域链是用来确定变量和函数的可见性的。它是由当前执行上下文及其所有父执行上下文组成。
  • this :this关键字指向当前执行上下文的执行对象。
  • 执行栈 :执行栈是用来存储函数调用的。当一个函数被调用时,它会被压入执行栈。当函数执行结束时,它会被弹出执行栈。
  • 内存堆 :内存堆是用来存储对象和数组的。当一个对象或数组被创建时,它会被分配到内存堆中。当对象或数组不再被使用时,它会被从内存堆中释放。

JavaScript执行上下文的生命周期

JavaScript执行上下文的生命周期可以分为以下几个阶段:

  • 创建 :当一个脚本或模块开始执行时,一个全局执行上下文会被创建。当一个函数被调用时,一个函数执行上下文会被创建。
  • 执行 :在执行上下文中,JavaScript代码会被执行。
  • 销毁 :当一个脚本或模块执行结束时,全局执行上下文会被销毁。当一个函数执行结束时,函数执行上下文会被销毁。

JavaScript执行上下文与作用域

JavaScript的作用域是指变量和函数的可访问性。作用域是由执行上下文决定的。一个变量或函数的作用域是它所在的执行上下文中声明的所有变量和函数。

JavaScript的作用域分为两种类型:

  • 全局作用域 :全局作用域是全局执行上下文中的作用域。全局作用域中的变量和函数可以在脚本或模块的任何地方访问。
  • 局部作用域 :局部作用域是函数执行上下文中的作用域。局部作用域中的变量和函数只能在函数内部访问。

结语

JavaScript执行上下文是执行JavaScript代码的环境,它决定了JavaScript代码的执行顺序和执行方式。理解JavaScript执行上下文对于理解JavaScript的运行机制非常重要。