0

我在 _.isEqual 下的 underscore.js 文档中看到了这一点。为什么会这样?

var moe   = {name: 'moe', luckyNumbers: [13, 27, 34]};
var clone = {name: 'moe', luckyNumbers: [13, 27, 34]};
moe == clone;
=> false

是不是因为字符串和数字不是对象,所以可以比较它们,但是 JS 不允许您比较作为对象的数组或对象文字?

4

2 回答 2

3

对象字面量总是定义一个新对象,因此变量moeclone引用不同的对象。

仅当操作数引用相同的对象时,比较对象的表达式才为真

阅读更多关于比较

这篇文章也有一个很好的答案,具有深度的“相似”比较功能

于 2013-10-13T05:08:38.097 回答
0

使用 JSON.stringify 属性:

JSON.stringify(moe) === JSON.stringify(clone)

注意:属性的顺序非常重要。在这种情况下,属性的moe顺序应该与属性的顺序相同,clone反之亦然。

于 2013-10-13T05:18:58.213 回答