这是《你不知道的 JS 》上的内容,书上的解释如下:
比较双方首先调用 toPrimitive,如果结果出现非字符串,就根据 ToNumber 规则将双方强制类型转换为数字进行比较
[42] < ['43'] // true
a 和 b 并没有转换为数字,因为 toPrimitive 返回的是字符串,所以这里比较的是 “ 42 ” 和 "043" 这两个字符串
[42] < ['043'] // false
我想问的是,第一个表达式为什么 toPrimitive 会转换为数字,而第二个表达式却说并没有转换为数字?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.