来自 Underscore 文档的 JavaScript 平等

JavaScript equality from Underscore docs

本文关键字:JavaScript 平等 文档 Underscore 来自      更新时间:2023-09-26

我在下划线.js _.isEqual下的文档上看到了这个。为什么会这样呢?

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

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

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

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

阅读更多关于比较的信息

此外,这篇文章还有一个不错的asnwer,具有深度的"相似"比较功能

使用 JSON.stringify 属性:

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

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