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

我已经尝试过了,但是我宁愿使用let/const,也不希望将此变量传递给全局范围,我想将其保留在模块中。

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

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

最佳答案

您将需要在IIFE.n()函数中返回该对象

const iife = (() => {
    let s = "string";
    const n = () => {
        s = 1e3;
        return {
                s: s,
                n: n
            };
    };
    return {
        s: s,
        n: n
    };
})()
iife.n().s返回1000iife.s返回“字符串”

每次调用iffe时,它都会创建自己的变量副本。在您的代码中,当您执行iffe.s时,它并不知道iffe.n()的先前调用。它将创建该变量的新副本并返回该副本。

关于javascript - JS : How to change variable in function (IIFE),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56509812/

10-11 02:37