此问题在此处已有答案:
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
我知道第一个问题的答案是正确的,但第二个问题的答案为什么是错误的。
2条答案
按热度按时间j9per5c41#
首先,它计算“3 > 2”,结果为true;然后,它计算“true > 1”,在数值上下文中将“true”视为1,结果为false。
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,这是假。
字符串
试试这个