如何使用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/