ES6モジュールを使用しており、変数をmoduleA
からmoduleB
にインポートしています:
_//moduleA.js
let a = 5;
let b;
export { a, b };
//moduleB.js
import { a, b } from './moduleA'
a = 6;
b = 1;
_
しかし、moduleB
の変更/割り当てでは、次のようなエラーが発生します。
a = 6;
ReferenceError:aは定義されていません
一方、moduleB
でconsole.log(a)
を実行できます。
インポートした変数に割り当てることはできませんか?これは本当ですか、それともその方法がありませんか?なぜこれが不可能なのですか?
import { a, b } from './moduleA'
と類似しています
const a = ...
const b = ...
後で値を割り当てることはできません。値canが変更されるため、まったく同じではありませんが、変更できるのはinsideモジュールのみです。だからできる
let a = 5;
function setA(value) {
a = value;
}
export { a, setA };
と
import { a, setA } from "./moduleA";
setA(4);
console.log(a); // 4
モジュールの外部からmutate値を指定できます。これは、const
でできるように、オブジェクトのプロパティを変更する場合と同じように、変数を指すことはできませんまったく異なるオブジェクト。
このように、参照が変更されないように、変数の代わりにオブジェクトを使用できます。
//moduleA.js
let object = {
a: 5,
};
export { object };
//moduleB.js
import { object } from './moduleA'
object.a = 6;
object.b = 1;