如何使用IIFE.n()更改s变量,因为它现在不起作用。在我执行IIFE.n()之后,IIFE.s仍然返回"string“
我已经尝试过了,但我宁愿使用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仍然返回"string")
发布于 2019-06-09 04:27:56
您需要在IIFE.n()函数中返回对象
const iife = (() => {
let s = "string";
const n = () => {
s = 1e3;
return {
s: s,
n: n
};
};
return {
s: s,
n: n
};
})()iife.n().s返回1000 iife.s返回"string“
每次调用iffe时,它都会创建自己的变量副本。在您的代码中,当您执行iffe.s时,它并不知道之前对iffe.n()的调用。它将创建一个新的变量副本并返回该副本。
发布于 2019-06-09 04:26:00
它确实更改了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());
iife.s与s变量不同。变量只是用来初始化属性,但它们并不是永久链接的。
https://stackoverflow.com/questions/56509812
复制相似问题