提问人:Atomcode 提问时间:11/13/2023 更新时间:11/13/2023 访问量:62
1<2<3 是真的,但与这 3>2>1 相反是错误的,为什么?[复制]
1<2<3 is true but reverse of this 3>2>1 is false, why? [duplicate]
问:
我是编程和学习 Web 开发的新手,当我在 javascript 中练习布尔数据类型时,我遇到了一个问题:
法典: " 控制台.log(1<2<3); 控制台.log(3>2>1); "
输出: 真 假
我知道第一个的答案是正确的,但对于第二个答案,为什么它打印了错误。
答:
1赞
Bilal Saad
11/13/2023
#1
首先,它评估“3 > 2”,这是真的。 然后,它计算“真> 1”,在数字上下文中将“真”视为 1,这是假的。
0赞
Nymul Islam Moon
11/13/2023
#2
console.log(1 < 2 < 3);和控制台.log(3 > 2 > 1);在于 JavaScript 如何处理比较运算符。
让我们分解每个表达式:
控制台.log(1 < 2 < 3);
在本例中,表达式从左到右计算。 1 < 2 为真,因此< 3 为真。 JavaScript 在数字上下文中将 true 转换为 1,因此它变为 1 < 3。 最终结果是正确的。 控制台.log(3 > 2 > 1);
与第一个示例类似,此表达式也是从左到右计算的。 3 > 2 为真,所以它> 1 为真。 JavaScript 在数字上下文中将 true 转换为 1,因此它变为 1 > 1。 最终结果是错误的。 行为差异的原因是 < 和 > 运算符在 JavaScript 中是左关联的,这意味着它们是从左到右计算的。因此,在第二个示例中,它首先计算 3 > 2(为 true),然后将 true > 1(为 false)进行比较。
console.log((1 < 2) < 3); // true
console.log(3 > (2 > 1)); // true
试试这个
评论
0赞
Jaromanda X
11/13/2023
当然,这些让它看起来像是工作......但是呢——这是真的还是假的?:p让我们想象一下一段代码正在做......你使用你的建议......()
3 > 2 > 3
a > b > c
a > (b > c)
0赞
Nymul Islam Moon
11/13/2023
3 > 2 > 3 在这里,代码将首先执行 3 > 2,这是真的,所以这里将有 1 而不是 3 > 2,在结果 1 > 3 为 false 之后,这里将有 1 和最后一部分。因此,您必须了解正在发生的事情以及将要处理的原因是什么,因为您必须将语言保持在较低水平
0赞
Jaromanda X
11/14/2023
但是 3 > 2 > 3 ....这是真的还是假的?我的观点是,OP 预计 3 > 2 > 1 是真的,但你必须让它成为现实。但是 3 > 2 > 3 应该是假的,并且确实会产生假,但是,加上括号,就变成了真。我的观点是,一般来说,答案不是应该写的()
3 > 2 > 3
3 > (2 > 3)
()
a > b > c
(a > b) && (b > c)
评论