javascript 1&lt;2 < 3 is true but reverse of this 3>2&gt;1是假的,为什么?

du7egjpx  于 2023-11-15  发布在  Java
关注(0)|答案(2)|浏览(109)

此问题在此处已有答案

Why does (0 < 5 < 3) return true?(15个答案)
Can I use chained comparison operator syntax? [duplicate](6个回答)
2天前关闭。
我是编程和学习Web开发的新手,当我在JavaScript中练习布尔数据类型时,我遇到了一个问题:
代码:“console.log(1<2<3); console.log(3>2>1);“
输出:true false
我知道第一个问题的答案是正确的,但第二个问题的答案为什么是错误的。

j9per5c4

j9per5c41#

首先,它计算“3 > 2”,结果为true;然后,它计算“true > 1”,在数值上下文中将“true”视为1,结果为false。

kgsdhlau

kgsdhlau2#

log(1 < 2 < 3);和console.log(3 > 2 > 1);之间的区别在于JavaScript如何处理比较运算符。
让我们分解每个表达式:
console.log(1 <3);
在这种情况下,表达式从左到右求值。1 < 2为true,因此变为true < 3。JavaScript在数值上下文中将true转换为1,因此变为1 < 3。最终结果为true。console.log(3 > 2 > 1);
与第一个例子类似,这个表达式也是从左到右求值的。3 > 2是true,所以它变成true > 1。JavaScript在数值上下文中将true转换为1,所以它变成1 > 1。最终结果是false。行为差异的原因是< and >运算符在JavaScript中是左关联的,这意味着它们是从左到右求值的。所以,在第二个例子中,它首先评估3 > 2,这是真,然后比较真> 1,这是假。

console.log((1 < 2) < 3);  // true
console.log(3 > (2 > 1));  // true

字符串
试试这个

相关问题