【发布时间】:2015-10-23 10:12:23
【问题描述】:
我知道在 SO 上有类似的问题,但没有一个提供我正在寻找的答案。
在 JavaScript 中,如果执行以下操作,结果将为 false:
我知道这与规范中如何定义 JavaScript 有关,但为什么会这样呢?这是违反直觉的。
如果("string" === "string") 的结果是true,那么为什么({ } === { }) 的结果不是真的?
我在某处看到,相等算法的设计类似于 C++ 或 C#,但这就像发明了一种全新的引擎,它使用 1/10 的燃料,而不是纯粹为了与其他汽车保持一致而使用它。
为什么 JavaScript 是这样定义的?这个决定背后有原因吗?还是只是为了让人们看到它正在做的事情?
【问题讨论】:
-
它们不相等,因为它们不是同一个对象。这就是为对象定义相等性的方式。你会提出什么其他的对象相等定义,为什么?
标签: javascript object equality