我看过很多关于javascript identity equal operator的解释===
,但似乎它们并不像我们对其他语言(如 Java)中身份相等的理解那样准确。
似乎对于基本类型(例如数字、字符串),===
返回 true 表示两个变量是否具有相同的类型和值。但不一定相同的身份(对同一对象的引用)。但对于数组和地图,它确实如此。以下是一些让我感到困惑的例子:
s1 = 'a' + '1'
s2 = 'a' + '1'
s1 === s2 // true, even they actually reference two different
objects in memory which suppose to be different identities.
a1 = [1,2]
a2 = [1,2]
a1 === a2 // false, as they reference two different objects in memory, even their values are the same.
有人可以确认我的理解是正确的吗?Javascript中的字符串也有真正的身份相等性检查。即s1 === s2
应该false
在上面的例子中返回?