返回

执行上下文简述

前端

执行上下文(Execution Context)是 JavaScript 代码执行环境的抽象概念。当 JavaScript 代码执行时,它都在执行上下文中执行。

执行上下文分为两大类:

  • 全局执行上下文: 这是 JavaScript 代码执行的初始环境。任何不在函数中执行的代码,都在全局执行上下文中执行。在浏览器中,全局执行上下文与浏览器的窗口对象(Window 对象)相同。
  • 局部执行上下文: 当在 JavaScript 中声明一个函数时,会创建一个局部执行上下文。当函数被调用时,这个局部执行上下文就被激活。函数被调用时,执行上下文中会有两步:创建局部变量和将函数与变量关联,执行函数体内代码。

局部执行上下文在函数被调用时创建,在函数执行完毕后销毁。

执行上下文是 JavaScript 代码执行环境的抽象概念。每当 JavaScript 代码在执行的时候,他都是在执行上下文中执行。

在 JavaScript 中,变量的作用域分为局部变量和全局变量,变量的作用域是指变量在什么范围内起作用。

在 JavaScript 中,函数可以嵌套调用,局部变量的作用域是函数内部,全局变量的作用域是全局执行上下文中。变量的作用域与执行上下文之间存在着闭包(Closure)的概念,闭包是指变量在执行上下文被销毁之后,其变量的值仍然保留在内存中。

执行上下文与变量作用域

变量的作用域是指变量在什么范围内起作用。

在 JavaScript 中,变量的作用域分为局部变量和全局变量。局部变量是指在函数内部声明的变量,局部变量的作用域就是函数内部。全局变量是指在全局执行上下文中声明的变量,全局变量的作用域就是全局执行上下文。

在 JavaScript 中,函数可以嵌套调用,局部变量的作用域是函数内部,全局变量的作用域是全局执行上下文中。

闭包

变量的作用域与执行上下文之间存在着闭包(Closure)的概念,闭包是指变量在执行上下文被销毁之后,其变量的值仍然保留在内存中。

在 JavaScript 中,函数可以嵌套调用,局部变量的作用域就是函数内部。当函数被调用时,局部执行上下文被创建,当函数执行完毕后,局部执行上下文被销毁。但是,如果函数内部还有函数调用,那么闭包就被创建了。

闭包的优点是能够在多个函数之间共享变量,这使得 JavaScript 中的函数式编程非常强大。

实例

以下 JavaScript 代码演示了执行上下文和变量作用域:

// 全局变量
var globalVariable = 1;

// 全局函数
function globalFunction() {
  // 局部变量
  var localVariable = 2;

  // 函数内函数
  function innerFunction() {
    // 访问局部变量
    console.log(localVariable);

    // 访问全局变量
    console.log(globalVariable);
  }

  innerFunction();
}

// 调用全局函数
globalFunction();

在执行上下文中,局部执行上下文(函数内部)被创建,全局变量和局部变量都被创建并赋值。

函数执行时,执行上下文中只有局部变量和局部执行上下文中声明的函数存在,全局变量只能通过闭包访问。

结论

执行上下文是 JavaScript 代码执行环境的抽象概念,它与变量作用域密切相关。

执行上下文与变量作用域之间存在着闭包(Closure)的概念,闭包是指变量在执行上下文被销毁之后,其变量的值仍然保留在内存中。