为什么
3>2>1
返回 false
,而1 < 2 < 3
返回 true
?
console.log(1 < 2 < 3);
console.log(3 > 2 > 1);
3>2>1
返回 false
,而1 < 2 < 3
返回 true
?
console.log(1 < 2 < 3);
console.log(3 > 2 > 1);
由于 1 < 2
的结果为true
,而3 > 2
的结果也是 true
,因此你基本上是在执行:
console.log(true < 3);
console.log(true > 1);
而且 true
被转换为 1
,因此得到了这个结果。
1 < 2 < 3
变成 true < 3
,因为我们正在比较数字,所以被转换为1 < 3
,这是真的。
3 > 2 > 1
变成 true > 1
,因为我们正在比较数字,所以被转换为1 > 1
,这是假的。这是因为它从左到右进行评估,使其等同于以下命令:
console.log(true < 3);
console.log(true > 1);
请查看下面的链接 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
console.log(1 < 2 < 3) ==> console.log(true < 3)==> (true表示1)=> console.log(1 < 3); 答案为true
console.log(3 > 2 > 1) ==> console.log(true >1)==> (true表示1)=> console.log(1 >1); 答案为false
console.log(3 > 2 >=1) ==> console.log(true >=1)==> (true表示1)=> console.log(1 = 1); 答案为true
$ console.log((1 < 2) < 3)
和 $ console.log((3 > 2) > 1)
第一种情况: $ console.log(1 < 2 < 3)
首先,编译器执行1<2,返回1(true),然后它执行1<3,也是1(true)。因此整个结果为true。