Merhabalar.
Yanılmıyorsam üç gündür bu projemin bir bug fixe ihtiyacı vardı ve nihayet bugün sorunun kaynağına ulaştım.
Javascript’te aynı özelliklere sahip iki obje asla birbirine eşit olamazmış.
“Two distinct objects can have same properties, but they are never equal. Only comparing the same object with itself returns true.”
Mesela:
let array1 = [1, 2, 3];
let array2 = [1, 2, 3];
console.log(
`
${array1 == array2} // false
${array1 === array2} //false
${ [1, 2, 3] == [1, 2, 3] } // false
${ [1, 2, 3] === [1, 2, 3] } // false
${ {key: "value"} == {key: "value" } } // false
${ {key: "value"} === {key: "value"} } // false
`
)
Bu olayı biraz araştırdım ve bu durumu açıklayan cevaplar genellikle aynı özelliklere sahip iki objenin asla birbirine eşit olamayacağından, ancak obje kendisiyle karşılaştırılırsa true
döneceğinden; objelerin bellekte farklı yerleri olduğundan vs. bahsetmiş.
Ben ise bu olayın sebebini ve teorik yönünü merak ediyorum.
Niye böyle bir şey var ?
Yukarıdaki kodların hepsi true
döndürse daha mantıklı olmaz mıydı, bunun arkasındaki mantık nedir ?
Neden Python’daki gibi olamazdı ? ([1, 2, 3] == [1, 2, 3] # true
)
Kısacası, neden ?