首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS:如何在函数中更改变量(IIFE)

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

Stack Overflow用户
提问于 2019-06-09 04:16:49
回答 2查看 401关注 0票数 5

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

我已经尝试过了,但我宁愿使用let/const,也不想把这个变量传递给全局作用域,我想把它保存在模块中。

代码语言:javascript
复制
const iife = (() => {
    let s = "string";
    const n = () => {
        s = 1e3;
    };
    return {
        s: s,
        n: n
    };
})()

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

EN

回答 2

Stack Overflow用户

发布于 2019-06-09 04:27:56

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

代码语言:javascript
复制
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()的调用。它将创建一个新的变量副本并返回该副本。

票数 4
EN

Stack Overflow用户

发布于 2019-06-09 04:26:00

它确实更改了s,但是您无法获取更新后的值,因此您看不到它正在更改。尝试一下,您将看到更新后的s

代码语言:javascript
复制
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.ss变量不同。变量只是用来初始化属性,但它们并不是永久链接的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56509812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档