簡體   English   中英

為什么Map()=== Map()評估為true?

[英]Why does Map() === Map() evaluate to true?

在ImmutableJS中,兩個不同的空映射對象的值為true。 為什么會這樣呢? 我認為這與基於哈希的比較或類似的事情有關。

它既不是哈希,也不是任何其他類型的“魔術”, 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

您可以通過在代碼中添加一些虛擬對象來解決此問題,例如:

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

並在創建新地圖時始終將其作為參數傳遞。 這不是理想的解決方案,但即使將兩者都使用相同的對象創建,也可以肯定將其返回false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM