【发布时间】:2021-09-23 18:35:57
【问题描述】:
在我的 node.js REPL 中,我创建了 4 个数组:
a = [1,2,3]、b=[]、c=[4,5]、d=null(好吧,d 不是数组,但你明白我的意思)
我是这样直接比较的:
> b = []
[]
> a > b
true
> b > a
false
> a > c
false
> c > a
true
> c > b
true
> b > c
false
> d > a
false
> a > d
false
这些表达式实际上在计算什么?
我看到这显然不是数组的长度。否则c > a 将是false。
谁能帮我理解一下!
【问题讨论】:
-
你需要学习很多 javascript 的隐式转换(我个人更喜欢显式转换,像这样比较数组只会抛出,但它就是这样),然后一个接一个地使用它们。跨度>
-
简而言之,JavaScript 将数组转换为其他类型,并使用该类型的比较器进行
operator>评估。由于这些结果没有任何有价值的语义含义,因此它基本上是一个毫无意义的操作,如果您需要该功能,您应该创建自己的例程来比较数组。进一步强调 为什么 JavaScript 选择以这种方式实现事物并没有太大意义,因为还有许多其他奇怪的 JavaScript 行为示例。
标签: javascript node.js arrays node-repl