JavaScript 中的作用域决定了变量和函数可访问的范围。在 JavaScript 中,有两种主要的作用域类型:全局作用域和局部作用域。
全局作用域
全局作用域指的是在代码中任何地方都可以访问的变量和函数。通常,全局作用域的变量和函数是在代码的最外层声明的。
var globalVar = '这是一个全局变量';
function globalFunc() {
console.log('这是一个全局函数');
}
在全局作用域中声明的变量和函数,在代码的任何地方都可以访问。
局部作用域
局部作用域指的是在函数内部声明的变量和函数。这些变量和函数只能在函数内部访问。
function localFunc() {
var localVar = '这是一个局部变量';
function localInnerFunc() {
console.log(localVar);
}
localInnerFunc();
}
在局部作用域中声明的变量和函数,只能在函数内部访问。
作用域链
当在局部作用域中访问一个变量时,JavaScript 引擎会沿着作用域链向上查找该变量。如果找到,则使用该变量的值;如果未找到,则继续向上查找,直到找到或到达全局作用域。
var globalVar = '全局变量';
function outerFunc() {
var outerVar = '外部变量';
function innerFunc() {
var innerVar = '内部变量';
console.log(innerVar); // 输出:内部变量
console.log(outerVar); // 输出:外部变量
console.log(globalVar); // 输出:全局变量
}
innerFunc();
}
outerFunc();
在上面的例子中,当在 innerFunc
函数中访问 innerVar
、outerVar
和 globalVar
时,JavaScript 引擎会沿着作用域链依次查找这些变量。
扩展阅读
更多关于 JavaScript 作用域的信息,可以阅读以下文章: