在两个函数中更新全局变量 JavaScript

Update global variables in two functions JavaScript

尽管我知道 JavaScript 中的“全局作用域、函数作用域、块作用域”。我卡在了这个代码块中。

我把代码逻辑简化如下。我期望的是,执行函数中的 console.log(a, b, c) 将是 a = 3、b = 6、c = 9。 但我实际得到的是 a = 0、b = 0、c = 0。出了什么问题以及如何解决这个问题?谢谢

(function() {
    let a,b,c;
    let conditions = [-1, 1, 2, 3 ];

    const execute = () => {
        for (let i=0; i<conditions.length; i++) {
            if (conditions[i] < 0) {
                a = 0;
                b = 0;
                c = 0;
            } else if (conditions[i] > 0) {
                update(a, b, c);
            }
        }
        console.log(a,b,c);
    }

    const update = (a, b, c) => {
        a = a + 1;
        b = b + 2;
        c = c + 3;
    }

    execute();

})()

在这里,通过不为 update() 声明参数,对父作用域中的变量进行赋值。

(function() {
    let a,b,c;
    let conditions = [-1, 1, 2, 3 ];

    const execute = () => {
        for (let i=0; i<conditions.length; i++) {
            if (conditions[i] < 0) {
                a = 0;
                b = 0;
                c = 0;
            } else if (conditions[i] > 0) {
                update(); // edit
            }
        }
        console.log(a,b,c);
    }

    const update = () => {
        a = a + 1;
        b = b + 2;
        c = c + 3;
    }
    execute();
})()