cro*_*raf 21 javascript import ecmascript-6
我正在使用ES6模块并将变量moduleA导入moduleB:
//moduleA.js
let a = 5;
let b;
export { a, b };
//moduleB.js
import { a, b } from './moduleA'
a = 6;
b = 1;
Run Code Online (Sandbox Code Playgroud)
但是在改变/分配方面,moduleB我遇到了错误,例如:
a = 6;
ReferenceError:未定义a
在另一方面,我可以console.log(a)在moduleB.
它接缝不可能分配给导入的变量?这是真的还是我错过了这样做的方法?为什么这不可能?
log*_*yth 26
import { a, b } from './moduleA'
Run Code Online (Sandbox Code Playgroud)
类似于
const a = ...
const b = ...
Run Code Online (Sandbox Code Playgroud)
因为你不能在之后分配值.它并不完全相同,因为值可以更改,但它们只能从模块内部更改.所以你可以做到
let a = 5;
function setA(value) {
a = value;
}
export { a, setA };
Run Code Online (Sandbox Code Playgroud)
同
import { a, setA } from "./moduleA";
setA(4);
console.log(a); // 4
Run Code Online (Sandbox Code Playgroud)
从模块外部可以改变一个值,就像你可以使用const一样,就像你正在改变对象上的属性一样,但是你不能让变量指向一个完全不同的对象.
Tro*_*ers 11
您可以使用对象而不是变量,这样引用不会更改:
//moduleA.js
let object = {
a: 5,
};
export { object };
//moduleB.js
import { object } from './moduleA'
object.a = 6;
object.b = 1;
Run Code Online (Sandbox Code Playgroud)