首页 > 解决方案 > 为什么不使用 const、let 或 var 时,嵌套函数只能访问顶级变量?

问题描述

我正在编写一段包含多个子功能的代码。

这些子函数都在一个主函数中调用。

我想在我的主函数中定义变量,并在我的子函数中使用它们(不必将它们作为相同的参数传递)。

一个例子:

const double = () => {
    console.log(a * 2);
}

const main1 = () => {
    try {
        const a = 1;
        double();
    } catch (err) {
        console.log(err);
    }
}

const main2 = () => {
    try {
        let a = 2;
        double();
    } catch (err) {
        console.log(err);
    }
}

const main3 = () => {
    try {
        var a = 3;
        double();
    } catch (err) {
        console.log(err);
    }
}

const main4 = () => {
    try {
        a = 4;
        double();
    } catch (err) {
        console.log(err);
    }
}

main1();
main2();
main3();
main4();

为什么main4()只有一个有效?

为什么让它工作的唯一方法是不使用constlet或者var

我应该如何定义main()我的子函数可以访问的变量,而不必将它们作为参数传递?

标签: javascriptnode.jsfunctionscopeglobal-variables

解决方案


推荐阅读