返回
编程领域中 JS 作用域的入门指南
前端
2023-11-10 03:21:29
JavaScript 中的作用域是什么?
在 JavaScript 中,作用域(Scope)是指变量或函数的可访问范围。它决定了哪些变量或函数可以在哪里被引用和使用。作用域通常与词法作用域(Lexical Scope)的概念相关。词法作用域是指变量或函数的有效范围由其在代码中声明的位置决定。换句话说,变量或函数的作用域是由其所在的代码块所决定的。
JavaScript 中的作用域类型
JavaScript 中有两种主要的作用域类型:全局作用域(Global Scope)和局部作用域(Local Scope)。全局作用域是 JavaScript 程序中最大的作用域,它包含所有没有被声明在函数内部的变量和函数。全局作用域中的变量和函数可以在程序的任何位置被访问和使用。局部作用域是指函数内部的作用域,它包含函数内部声明的变量和函数。局部作用域中的变量和函数只能在该函数内部被访问和使用。
JavaScript 中的作用域规则
JavaScript 中的作用域遵循以下规则:
- 变量或函数只能在其作用域内被访问和使用。
- 内部作用域可以访问其外部作用域中的变量和函数。
- 外部作用域不能访问其内部作用域中的变量和函数。
- 当一个函数被调用时,它会创建一个新的执行上下文(Execution Context)。该执行上下文包含该函数的参数、局部变量和该函数对外部作用域的引用。
- 闭包(Closure)是指一个函数及其创建时所访问的变量和函数的组合。闭包可以使外部作用域中的变量和函数在内部作用域中仍然可用。
JavaScript 中的作用域示例
以下是一个 JavaScript 代码示例,演示了作用域的用法:
// 全局作用域
var globalVariable = 10;
function outerFunction() {
// 局部作用域
var localVariable = 20;
function innerFunction() {
// 内部作用域
console.log(globalVariable); // 10
console.log(localVariable); // 20
}
innerFunction();
}
outerFunction();
在这个示例中,全局变量 globalVariable
可以被函数 outerFunction()
和 innerFunction()
访问。局部变量 localVariable
只可以被函数 outerFunction()
和 innerFunction()
访问。内部变量 innerVariable
只可以被函数 innerFunction()
访问。