【发布时间】:2020-01-14 10:18:56
【问题描述】:
我一直在比较 JS 中的版本代码,发现这些类型的比较始终如一,我不知道为什么:
"3.4.06" < "3.4.02" (false)
"3.3.01" < "3.4.02" (true)
"3.3.01" > "3.4.02" (false)
"3.5.2" < "3.4.1" (false)
"3.5.2" > "3.4.0015" (true)
这些显然不是 javascript 中的有效数字,但是 JS 引擎以某种方式比较字符串值以使事情正常进行。任何人都可以深入了解 JS 引擎是如何做到这一点的吗?我在 V8 上运行。
【问题讨论】:
-
javascript.info/comparison Javascript 逐字母比较字符串。您可能知道,char 基本上是内存中的数字。
-
它只是逐个字符地进行字典检查。
3在4之前,所以"3" < "4"成功。然而,这意味着"4" < "30"是false,因为4比3更晚 -
词汇与数字。 Stings 在词汇上进行比较。所以
"100" < "9",因为“1”出现在“9”之前,而“100”不被视为一个完整的实体。 Numerical 将比较整个数字的值,其中100 > 9 -
太棒了!我不知道词汇比较。感谢您的洞察力!
标签: javascript string numbers comparison string-comparison