首页 > 解决方案 > 为什么比较无效数字的字符串值有效?

问题描述

我一直在比较 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 上运行。

标签: javascriptstringnumberscomparisonstring-comparison

解决方案


因为 JavaScript 会按顺序比较每个字符。假设"10" > "2"它会返回false,因为 JS "1">"2"先比较然后它会导致false


推荐阅读