js比较运算符遇到的疑惑,请大家帮看看~

刚刚遇到的问题
在chrome中测出来

let num = 15
0<num<3 //true 不知道为什么会出现这种情况
3>num>15 //false 我想要的值 

我的理解 0<num<3 也应该是false;
这是什么样的逻辑呢,没看明白.
请大家帮看看原因!感谢~

阅读 1.7k
2 个回答
0<num<3

分 2 步
第一步: 0<num 首先他返回的是 true
第二步: true<3 大家都知道 true==1,所以这里是 1<3
所以返回 true

3>num>15

同理

表达式是从左至右、按照运算符优先级计算的,不是数据中的公式。

0 < num < 3,先算 0 < num,该表达式返回一个 bool 值,要么是 true(即 1)、要么是 false(即 0);再算 true/false < 3(即 0/1 < 3),所以表达式恒成立。

下面的自己推导一下吧。


如果你想表达数学上的“num 既大于 0 又小于 3”,应该用和运算符num > 0 && num < 3

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题