这个JavaScript代码段是如何处理的?

问题描述 投票:0回答:1

JavaScript代码段如下:

var a = [1, 2, 3],
    b = [1, 2, 3],
    c = [1, 2, 4]
a ==  b
a === b
a >   c
a <   c

据我所知,因为数组是对象,当你使用'=='或'==='比较两个对象时,你实际上比较了它们的引用。所以a == b和a === b all都返回false。对?

考虑到> c和<c比较,我在Chrome中试过并且> c返回false,<c返回true。正如我用Google搜索的那样,“数组按字典顺序与>和<”进行比较。这是否意味着'a> c'在逻辑上等于:

for (var i = 0; i < Math.min(a.length, c.length); i++) {
   if (a[i].toString() <= c[i].toString)   return false;
}
return true;

我对吗?如果没有,任何人都可以帮助解释其背后的机制吗?非常感谢。

javascript arrays comparison
1个回答
0
投票

它将数组转换为字符串,然后按字典顺序对它们进行比较。将数组转换为字符串将返回array.join(',')的结果,因此

[1, 2, 3] < [1, 2, 4]

相当于

"1,2,3" < "1,2,4"

对于数组,这实际上与循环相同。对于字符串数组,它可能不相同。

有关如何在比较运算符中执行强制的更多信息,请参阅How do the JavaScript relational comparison operators coerce types?

© www.soinside.com 2019 - 2024. All rights reserved.