JS:如何更改函数中的变量(IIFE)

Mar*_*nek 5 javascript return constants function iife

如何使用 IIFE.n() 更改 s 变量,因为现在它不起作用。在我执行 IIFE.n() IIFE.s 后仍然返回“字符串”

我已经尝试过这个,但我宁愿使用 let/const 并且不想将此变量传递给全局范围我想将它保留在模块中。

const iife = (() => {
    let s = "string";
    const n = () => {
        s = 1e3;
    };
    return {
        s: s,
        n: n
    };
})()
Run Code Online (Sandbox Code Playgroud)

目前,当我执行 iife.n() 时,它不会更改 s 变量(当我在 s = 1e3 之前添加 return 时,它返回 1000 但 iife.s 仍返回“string”)

Bar*_*mar 3

它确实发生了变化s,但是您没有任何方法来获取更新后的值,因此您看不到它正在发生变化。试试这个,你会看到更新后的s

const iife = (() => {
    let s = "string";
    const n = () => {
        s = 1e3;
    };
    const gets = () => s;
    return {
        s: s,
        n: n,
        gets: gets
    };
})();

iife.n();
console.log(iife.gets());
Run Code Online (Sandbox Code Playgroud)

iife.s与变量不一样s。该变量仅用于初始化属性,但它们并未永久链接。