JavaScript中1<2<3为true但3>2>1为false的原因咨询
JavaScript链式比较结果差异解析
先看第一个表达式 console.log(1<2<3):
JavaScript会从左到右依次计算比较表达式,第一步先算 1<2,结果是布尔值true。在JS里,布尔值参与数字比较时会被转换成数字:true对应1,false对应0。所以接下来就变成了 1<3,这个结果显然是true,所以第一个输出是true。
再看第二个表达式 console.log(3>2>1):
同样从左到右计算,第一步3>2得到true,转换成数字1,接下来就变成了 1>1,这个比较的结果是false,所以第二个输出是false。
本质上这种链式比较不是判断中间值是否在两边区间内,而是拆成连续的两次独立比较,每次比较的布尔结果会转成数字参与下一次运算。
内容的提问来源于stack exchange,提问作者Atomcode
相关产品推荐
相关产品推荐

