ES6变量通过引用或复制导入

时间:2017-10-25 16:23:05

标签: javascript node.js ecmascript-6

假设我有var.js

export let x = 1;
export const f = () => x = 5;

然后我在另一个文件中执行此操作

import { x, f } from './var.js';
console.log(x); // 1
f();
console.log(x); // 5

为什么导入的变量x能够相应更改?

import { x }中的x发生更改后会var.js重新评估吗?

x引用x中的原始var.js而不是副本?

2 个答案:

答案 0 :(得分:3)

ES6导入/导出实际上是绑定(引用)。随着原始文件xvar.js的值发生变化,它也会反映在另一个文件中。

参考:http://2ality.com/2015/07/es6-module-exports.html

答案 1 :(得分:0)

解决方案不适用于功能

export let e = () => {
  console.log('b')
}

window.b = () => {
  e = () => {
    console.log('c')
  }
}

当从另一个文件调用时,“引用”不变。

import { e } from './test'
e() // b
b()
e() // still b