返回

JavaScript 基础(二):执行上下文到底会怎样运行JavaScript?

前端

执行上下文:JavaScript 代码运行的环境

JavaScript 的执行上下文相当于 JavaScript 代码执行的环境,它定义了 JavaScript 代码在其中运行的规则和行为。每个执行上下文都有自己的变量对象、作用域链和 this 值。

执行上下文的创建

当 JavaScript 代码开始执行时,就会创建一个执行上下文。执行上下文可以是全局执行上下文或函数执行上下文。

  • 全局执行上下文 :当脚本文件开始执行时,就会创建一个全局执行上下文。全局执行上下文包含所有在脚本文件中定义的变量和函数。
  • 函数执行上下文 :当一个函数被调用时,就会创建一个函数执行上下文。函数执行上下文包含该函数的参数、局部变量和 this 值。

执行上下文的生命周期

执行上下文的生命周期与代码的执行过程密切相关。

  • 创建 :当 JavaScript 代码开始执行时,就会创建一个执行上下文。
  • 执行 :代码在执行上下文中执行。
  • 销毁 :当代码执行完毕,执行上下文就会被销毁。

执行上下文的用途

执行上下文在 JavaScript 中有许多用途,包括:

  • 管理变量和函数 :执行上下文包含了在其中定义的变量和函数。
  • 确定作用域 :执行上下文的作用域链决定了变量和函数的可见性。
  • 确定 this :执行上下文的 this 值决定了 this 的引用对象。

执行上下文与作用域

作用域是变量和函数的可见性范围。执行上下文的作用域链决定了变量和函数的可见性。作用域链是一个指向所有父执行上下文的指针列表。

当一个变量或函数在当前执行上下文中找不到时,就会沿着作用域链向上查找。如果在作用域链的任何一个父执行上下文中找到了该变量或函数,那么就可以访问该变量或函数。

执行上下文与闭包

闭包是一个可以访问其创建时执行上下文中的变量和函数的函数。闭包可以用来实现一些特殊的功能,例如:

  • 私有变量
  • 函数柯里化
  • 延迟执行

执行上下文与 this 关键字

this 关键字的引用对象取决于执行上下文。在全局执行上下文中,this 关键字的引用对象是全局对象。在函数执行上下文中,this 关键字的引用对象是该函数的调用者。

总结

执行上下文是 JavaScript 代码执行的环境。它定义了 JavaScript 代码在其中运行的规则和行为。每个执行上下文都有自己的变量对象、作用域链和 this 值。

执行上下文在 JavaScript 中有许多用途,包括管理变量和函数、确定作用域、确定 this 值等。