我最近在Kyle Simpson的"你不了解JS:ES6"中读到了以下内容
"[ES6模块导出]实际绑定(几乎像指针)到内部模块定义中的标识符."
我的困惑是这些绑定与参考文献有何不同......
我理解JS 中的引用只适用于非原始类型(如对象),因此给定
let object1 = {a: 1};
let object2 = object1;
Run Code Online (Sandbox Code Playgroud)
object1
而object2
现在所说的(他们是两个参考点)同一个对象.
如果我添加一个属性object2
,我也添加了一个属性object1
object2.b = 2;
console.log(object1.b); // 2
Run Code Online (Sandbox Code Playgroud)
我可以看到绑定可以应用于基本类型和非基元类型
// 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
Run Code Online (Sandbox Code Playgroud)
绑定就像引用一样,除了原始值也可以共享绑定(而引用仅限于非基本类型)?
我觉得我在这里错过了一些东西......