例如:
var one = ['H', 'i'];
var two = ['H', 'i'];
(one == two) returns false
但
(one.join('') == two.join('')) returns true
为什么?
答案 0 :(得分:3)
如何为字符串和数组定义相等性存在差异 - 如果字符串的内容相同则认为字符串相等,但只有当数组是相同的数组时才认为数组是相等的,否则即使它们的内容匹配也不同。
原因可能有很多原因,例如两个原因:
1)你经常不希望数组比较通过整个数组,因为它可能很大并且需要很长时间。所以默认方式不应该是危险的。
2)你可以改变数组内容,同时仍然是'相同'的数组;而javascript字符串是不可变的,因此任何更改的字符串都是一个新的,不同的对象。
答案 1 :(得分:1)
在比较对象时,JS想要查看它们是否是实际相同的对象,而不仅仅是具有相同内容的对象。
我发现下划线的isEqual方法在这里很有用,但是如果你想弄清楚它是如何完成库的,只需看一下下划线核心,这很容易阅读