javascript - 为什么比较无效数字的字符串值有效?
问题描述
我一直在比较 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 会按顺序比较每个字符。假设"10" > "2"
它会返回false
,因为 JS "1">"2"
先比较然后它会导致false
推荐阅读
- jenkins-pipeline - 如何在管道中访问 Vault 凭据
- python - “sklearn.ensemble.GradientBoostingClassifier”的损失参数解释
- c# - 在 Unity 中启动 Android 电子邮件客户端,指定收件人、主题和正文作为 Intent Extras... 获取 NoSuchFieldError
- android - 如何创建一个 .pwd 文件来为 Bundle Tool 签名 APK 集?
- c++ - Visual Studio C++ 位域结构体大小问题
- sap - CRM_ORDER_READ FM 的标准数据源
- java - 如何将包含多个 JSON 的文本文件拆分为每个数组元素包含单个 json 的字符串数组?
- ios - 使用 CAShapeLayer 为蒙版的一部分设置透明度动画
- selenium - 如何使用 span 类从下拉列表中选择一个值。常规的下拉功能不适用于 span 类
- excel - Active X 命令按钮突然停止工作