JavaScript代码段如下:
var a = [1, 2, 3],
b = [1, 2, 3],
c = [1, 2, 4]
a == b
a === b
a > c
a < c
&#13;
据我所知,因为数组是对象,当您使用&#39; ==&#39;比较两个对象时或者&#39; ===&#39;,你实际比较他们的参考。所以a == b和a === b all都返回false。正确?
考虑&gt; c和a&lt; c比较,我在Chrome中尝试了一个&gt; c返回false,a&lt; c返回true。当我用Google搜索时,&#34;数组按字典顺序与&gt;进行比较。并且&lt;&#34;。这是否意味着&#39; a&gt; C&#39;逻辑上等于:
for (var i = 0; i < Math.min(a.length, c.length); i++) {
if (a[i].toString() <= c[i].toString) return false;
}
return true;
&#13;
我是对的吗?如果没有,任何人都可以帮助解释其背后的机制吗?非常感谢。
答案 0 :(得分:0)
它将数组转换为字符串,然后按字典顺序对它们进行比较。将数组转换为字符串将返回array.join(',')
的结果,因此
[1, 2, 3] < [1, 2, 4]
相当于
"1,2,3" < "1,2,4"
对于一组数字,这实际上与你的循环相同。它可能与字符串数组不相同。
有关如何在比较运算符中执行强制操作的详细信息,请参阅How do the JavaScript relational comparison operators coerce types?