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 函数中访问 innerVarouterVarglobalVar 时,JavaScript 引擎会沿着作用域链依次查找这些变量。

扩展阅读

更多关于 JavaScript 作用域的信息,可以阅读以下文章: