为什么在导入的模块中修改导出的变量后没有改变?

问题描述 投票:0回答:1

在类星体应用程序扩展的启动文件中

register.ts
,我这样做:

let appUrl = '';

const bootFunc = ({app, store, router}) => {

    console.log('In app-extension boot file');

    appUrl = app.config.globalProperties.$appUrl;

};

export {bootFunc as default, appUrl };

变量

appUrl
被导出,然后当应用程序扩展初始化时,
bootFunc
被调用。
appUrl
已正确初始化。

appUrl
被另一个文件导入并使用。我希望在那时设置
appUrl
,但是当我访问它时它仍然没有改变。

为什么

bootFunc
不覆盖该值?

javascript export
1个回答
0
投票

在 JavaScript 中,变量包含对对象的引用。赋值会更改变量中的引用。它不会修改对象。

appUrl
包含对数据的引用。
export {bootFunc as default, appUrl };
导出此引用的副本。
appUrl = app.config.globalProperties.$appUrl;
为变量分配另一个引用,即对不同对象的引用。它不会修改第一个对象。永远记住:如果你想修改现有的引用,你不能使用赋值运算符。

这是基本的 JavaScript。您不需要模块、导入和导出来重现它:

let appUrl = '';
let appUrlCopy = appUrl;
appUrl = 'url';
console.log('appUrl:', appUrl);
console.log('appUrlCopy:', appUrlCopy);

© www.soinside.com 2019 - 2024. All rights reserved.