Javascript 为什么Map()==Map()的计算结果为true?

Javascript 为什么Map()==Map()的计算结果为true?,javascript,immutable.js,Javascript,Immutable.js,在ImmutableJS中,两个不同的空映射对象的计算结果为true。为什么会这样?我认为这与基于散列或类似内容的比较有关。您可以通过在代码中添加一些虚拟对象来解决它,例如: const dummy = {key: "I am a dummy object"} 并在创建新地图时始终将其作为参数传递。这不是理想的解决方案,但在相互比较时肯定会返回false,即使两者都是使用相同的对象创建的。您可以通过在代码中添加一些虚拟对象来解决此问题,如: const dummy = {key: "I am

在ImmutableJS中,两个不同的空映射对象的计算结果为true。为什么会这样?我认为这与基于散列或类似内容的比较有关。

您可以通过在代码中添加一些虚拟对象来解决它,例如:

const dummy = {key: "I am a dummy object"}

并在创建新地图时始终将其作为参数传递。这不是理想的解决方案,但在相互比较时肯定会返回false,即使两者都是使用相同的对象创建的。

您可以通过在代码中添加一些虚拟对象来解决此问题,如:

const dummy = {key: "I am a dummy object"}

并在创建新地图时始终将其作为参数传递。这不是理想的解决方案,但在相互比较时肯定会返回false,即使两者都是使用相同的对象创建的。

这不是散列,也不是任何其他魔法,immutablejs为两个调用返回完全相同的引用

例如,这就是它处理空映射的方式。它将空映射指定给自己的全局范围,并始终重新使用相同的引用

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

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

例如,这就是它处理空映射的方式。它将空映射指定给自己的全局范围,并始终重新使用相同的引用

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

它只是从两个调用中返回完全相同的值。为什么它必须为无法更改的内容创建新的内容呢?事实证明,在我的场景中,这种比较需要为false。听起来像是我需要知道什么时候创建了一个新对象。但是没有创建新对象。似乎您希望执行以下操作:new Map===new Map。它只是从两个调用返回完全相同的值。为什么它必须为无法更改的对象创建新对象?事实证明,我有一种情况,这种比较需要为false。听起来像是我需要知道什么时候创建了一个新对象。但未创建新对象。似乎您希望执行以下操作:new Map==new Map。