【发布时间】:2020-02-14 15:56:00
【问题描述】:
当从 ES6 模块导入/导出数据时,该数据的可变性在命名导入和导出之间似乎有所不同。这是有原因的还是我不理解的一些根本差异?
// counter.js
export let count = 0;
export const incrementCount = () => count += 1;
export default count;
// main-default.js
import count, { incrementCount } from './counter';
console.log(count); // 0
incrementCount();
incrementCount();
console.log(count); // 0
// main-named.js
import { count, incrementCount } from './counter';
console.log(count); // 0
incrementCount();
incrementCount();
console.log(count); // 2
在这两种情况下,我都希望count 增加。但是,这只发生在使用命名导出时。
【问题讨论】:
-
不管怎样,上面的代码在用 Babel 7.6.0 转译后进行了测试。
-
不转译也会发生同样的事情吗?
-
@JohnnyCrain 如果您仔细观察转译的代码,该函数会更改名称 export 而不是默认的导出计数
-
@dandavis 无论是转译还是直接由 Chromium 运行,结果都是一样的。
标签: javascript ecmascript-6 es6-modules