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

为何JavaScript中"2" < "123"为false,而2 < "123"为true?

JavaScript中字符串与数字比较的差异解析

你遇到的差异核心是JavaScript的比较规则不同,下面分两种情况解释:

情况1:字符串与字符串比较('2' < '123')

当两个操作数都是字符串时,JavaScript会按照**Unicode码点(ASCII是Unicode的子集)**逐字符进行对比:

  • 先取两个字符串的第一个字符:'2'的Unicode码点是50,'123'的第一个字符'1'码点是49
  • 因为50 > 49,所以直接判定'2'大于'123',返回false
  • 这种对比不会将字符串转为数值,也不会考虑字符串的长度,只按字符顺序逐位比较

情况2:数字与字符串比较(2 < '123')

当操作数一个是数字、一个是字符串时,JavaScript会先尝试将字符串转换为数字:

  • '123'会被转换为数字123
  • 随后进行数值比较:2 < 123,结果为true

代码验证

console.log('2' < '123'); // 输出 false
console.log(2 < '123');   // 输出 true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:55:16