Suppose i have a var.js
export let x = 1;
export const f = () => x = 5;
Then i execute this in another file
import { x, f } from './var.js';
console.log(x); // 1
f();
console.log(x); // 5
Why is the imported variable x
able to change accordingly?
Does import { x }
gets re-evaluated when x
in var.js
changes?
Or is x
a reference to the original x
in var.js
rather than a copy?
ES6 import/exports are actually bindings (references). As the value of x
in original file var.js
changes, it's reflected in another file too.
Reference: http://2ality.com/2015/07/es6-module-exports.html
solution doesn't work for functions
export let e = () => {
console.log('b')
}
window.b = () => {
e = () => {
console.log('c')
}
}
the when calling from another file, the "reference" doesn't change.
import { e } from './test'
e() // b
b()
e() // still b
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With