[英]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.