最近、Kyle Simpson の You Don't Know JS: ES6 で以下を読みました。
「[ES6モジュールのエクスポート]内部モジュール定義の識別子への実際のバインディング(ほとんどポインターのようなもの)。」
私の混乱は、これらのバインディングが参照とどのように異なるかです...
JS での参照は非プリミティブ型 (オブジェクトなど) にのみ適用されることを理解しています。
let object1 = {a: 1};
let object2 = object1;
object1
そしてobject2
今、同じオブジェクトを参照しています(両方とも参照しています)。
にプロパティを追加するとobject2
、 にもプロパティが追加されますobject1
object2.b = 2;
console.log(object1.b); // 2
また、バインディングはプリミティブ型と非プリミティブ型の両方に適用できることがわかります
// foo.js
export let count = 1;
export function incrementCount() { count++; }
// bar.js
import {count, incrementCount} from foo;
console.log(count); // 1
incrementCount();
console.log(count); // 2
プリミティブ値もバインディングを共有できることを除いて、バインディングは参照と同じですか (参照は非プリミティブ型に限定されます)?
ここで何かが欠けているような気がします...