You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何JavaScript中"2" > "12"返回True?字符串比较逻辑解析

JavaScript 字符串与数字比较逻辑解析

一、不同类型(字符串 vs 数字)的比较规则

当字符串和数字进行比较时,JavaScript 会自动将字符串转换为数字后再做数值比较:

  • 示例1:"12" > 5 → 转换为 12 > 5,返回 true
  • 示例2:"abc" > 5 → 字符串转数字得到 NaN,任何值和 NaN 比较都返回 false

二、同类型(字符串 vs 字符串)的比较规则

字符串之间的比较并非只看最左侧字符就忽略后续内容,而是从左到右逐字符按 Unicode 编码值对比,具体规则:

  1. 从第一个字符开始,依次比较对应位置字符的 Unicode 编码值
  2. 一旦找到编码值不同的字符,直接根据该字符的大小关系得出整体结果,后续字符不再参与比较
  3. 如果所有对应位置的字符都相同,则长度更长的字符串更大

对应你提到的示例解析:

  • "2" > "12":第一个字符 "2" 的 Unicode 编码是 50,"12" 的第一个字符 "1" 编码是 49,50 > 49,所以直接返回 true,无需看 "12" 的第二个字符
  • "12" < "5":第一个字符 "1" 编码 49 小于 "5" 的编码 53,直接返回 true,无需看 "12" 的第二个字符

补充场景验证:

  • "app" < "apple":前3个字符完全相同,"apple" 长度更长,返回 true
  • "a12" > "a2":第一个字符相同,第二个字符 "1"(编码49)小于 "2"(编码50),返回 false
  • "zoo" > "apple":第一个字符 "z"(编码122)大于 "a"(编码97),返回 true

内容的提问来源于stack exchange,提问作者Daesdra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 23:39:51