首页 > 解决方案 > 为什么 Map() === Map() 评估为真?

问题描述

在 ImmutableJS 中,两个不同的空地图对象评估为真。为什么会这样?我认为这与基于散列或类似的比较有关。

标签: javascriptimmutable.js

解决方案


它不是散列,也不是任何其他类型的“魔法”,immutablejs为两个调用返回完全相同的引用。

例如,这就是它处理空地图的方式。它将空映射分配给自己的“全局”范围,并始终重新利用相同的引用。

let EMPTY_MAP;
export function emptyMap() {
  return EMPTY_MAP || (EMPTY_MAP = makeMap(0));
}

https://github.com/immutable-js/immutable-js/blob/master/src/Map.js#L637


推荐阅读