返回
JavaScript 基础(二):执行上下文到底会怎样运行JavaScript?
前端
2023-10-07 19:58:39
执行上下文:JavaScript 代码运行的环境
JavaScript 的执行上下文相当于 JavaScript 代码执行的环境,它定义了 JavaScript 代码在其中运行的规则和行为。每个执行上下文都有自己的变量对象、作用域链和 this
值。
执行上下文的创建
当 JavaScript 代码开始执行时,就会创建一个执行上下文。执行上下文可以是全局执行上下文或函数执行上下文。
- 全局执行上下文 :当脚本文件开始执行时,就会创建一个全局执行上下文。全局执行上下文包含所有在脚本文件中定义的变量和函数。
- 函数执行上下文 :当一个函数被调用时,就会创建一个函数执行上下文。函数执行上下文包含该函数的参数、局部变量和
this
值。
执行上下文的生命周期
执行上下文的生命周期与代码的执行过程密切相关。
- 创建 :当 JavaScript 代码开始执行时,就会创建一个执行上下文。
- 执行 :代码在执行上下文中执行。
- 销毁 :当代码执行完毕,执行上下文就会被销毁。
执行上下文的用途
执行上下文在 JavaScript 中有许多用途,包括:
- 管理变量和函数 :执行上下文包含了在其中定义的变量和函数。
- 确定作用域 :执行上下文的作用域链决定了变量和函数的可见性。
- 确定
this
值 :执行上下文的this
值决定了this
的引用对象。
执行上下文与作用域
作用域是变量和函数的可见性范围。执行上下文的作用域链决定了变量和函数的可见性。作用域链是一个指向所有父执行上下文的指针列表。
当一个变量或函数在当前执行上下文中找不到时,就会沿着作用域链向上查找。如果在作用域链的任何一个父执行上下文中找到了该变量或函数,那么就可以访问该变量或函数。
执行上下文与闭包
闭包是一个可以访问其创建时执行上下文中的变量和函数的函数。闭包可以用来实现一些特殊的功能,例如:
- 私有变量
- 函数柯里化
- 延迟执行
执行上下文与 this
关键字
this
关键字的引用对象取决于执行上下文。在全局执行上下文中,this
关键字的引用对象是全局对象。在函数执行上下文中,this
关键字的引用对象是该函数的调用者。
总结
执行上下文是 JavaScript 代码执行的环境。它定义了 JavaScript 代码在其中运行的规则和行为。每个执行上下文都有自己的变量对象、作用域链和 this
值。
执行上下文在 JavaScript 中有许多用途,包括管理变量和函数、确定作用域、确定 this
值等。