web-dev-qa-db-ja.com

ES6でインポートされた変数の値を変更する

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は定義されていません

一方、moduleBconsole.log(a)を実行できます。

インポートした変数に割り当てることはできませんか?これは本当ですか、それともその方法がありませんか?なぜこれが不可能なのですか?

15
croraf
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でできるように、オブジェクトのプロパティを変更する場合と同じように、変数を指すことはできませんまったく異なるオブジェクト。

21
loganfsmyth

このように、参照が変更されないように、変数の代わりにオブジェクトを使用できます。

//moduleA.js
let object = {
    a: 5,
};

export { object };

//moduleB.js
import { object } from './moduleA'

object.a = 6;
object.b = 1;
9
Troopers