我最近在 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
绑定就像引用一样,除了原始值也可以共享绑定(而引用仅限于非原始类型)?
我觉得我在这里错过了一些东西......