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

为什么console.log(10 < 14 < 50)输出true而console.log(10 > 7 > 2)输出false

原因分析

这是JavaScript比较运算符的左结合特性和布尔值隐式类型转换共同导致的结果,和数学上的链式比较逻辑完全不同。

运算规则说明

JavaScript中的比较运算符不会同时校验三个值的范围关系,只会从左到右依次执行两步运算:

  • 先计算左侧第一个比较表达式,得到布尔值结果
  • 将布尔值隐式转换为数字后,再参与第二个比较运算,布尔值转数字的规则为:true转1,false转0

两个表达式的具体执行过程

1. 10 < 14 < 50 执行步骤

  • 第一步运算:10 < 14 结果为 true
  • 第二步运算:true < 50 隐式转换后等价于 1 < 50,结果为 true,因此最终输出true

2. 10 > 7 > 2 执行步骤

  • 第一步运算:10 > 7 结果为 true
  • 第二步运算:true > 2 隐式转换后等价于 1 > 2,结果为 false,因此最终输出false

正确的多范围比较写法

如果要实现数学意义上的链式范围判断,需要用逻辑与(&&)连接两个独立的比较表达式:

  • 要判断 a < b < c 正确写法为 a < b && b < c
  • 要判断 10 > 7 > 2 并得到true,正确写法为 10 > 7 && 7 > 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:45:06