执行上下文简述
2023-11-27 03:26:32
执行上下文(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)的概念,闭包是指变量在执行上下文被销毁之后,其变量的值仍然保留在内存中。