Eloquent JS中逻辑运算符示例的解释
Explanation for logical operators example in Eloquent JS
我无法理解 Eloquent JS 书中的以下示例:
console.log(
1 + 1 == 2 && 10 * 10 > 50 // true
);
谁能一步步给我解释一下。
运算符优先级
:
+
的优先级为 13
==
的优先级为 10
*
的优先级为 14
>
的优先级为 11
&&
的优先级为 6
所以,代码等同于:
1 + 1 == 2 && (10 * 10) > 50 // group * (precedence 14)
(1 + 1) == 2 && (10 * 10) > 50 // group + (precedence 13)
(1 + 1) == 2 && ((10 * 10) > 50) // group > (precedence 11)
((1 + 1) == 2) && ((10 * 10) > 50) // group == (precedence 10)
然后简化:
((1 + 1) == 2) && ((10 * 10) > 50)
((2) == 2) && ((10 * 10) > 50)
(true) && ((10 * 10) > 50)
(true) && ((100) > 50)
(true) && (true)
true
首先,我们有一个加一,我们正在检查它是否等于二(它是)。
1 + 1 == 2
然后我们有一个逻辑 AND 运算符 (&&
),它检查两边的语句是否为真。至此,以上为真,继续处理。
最后我们将十乘以十 (100) 并检查它是否大于 50(是)。
10 * 10 > 50
最后,AND 运算符发现两个参数都为真,并给出我们的结果:
console.log(1 + 1 == 2 && 10 * 10 > 50);
我无法理解 Eloquent JS 书中的以下示例:
console.log(
1 + 1 == 2 && 10 * 10 > 50 // true
);
谁能一步步给我解释一下。
运算符优先级 :
+
的优先级为 13==
的优先级为 10*
的优先级为 14>
的优先级为 11&&
的优先级为 6
所以,代码等同于:
1 + 1 == 2 && (10 * 10) > 50 // group * (precedence 14)
(1 + 1) == 2 && (10 * 10) > 50 // group + (precedence 13)
(1 + 1) == 2 && ((10 * 10) > 50) // group > (precedence 11)
((1 + 1) == 2) && ((10 * 10) > 50) // group == (precedence 10)
然后简化:
((1 + 1) == 2) && ((10 * 10) > 50)
((2) == 2) && ((10 * 10) > 50)
(true) && ((10 * 10) > 50)
(true) && ((100) > 50)
(true) && (true)
true
首先,我们有一个加一,我们正在检查它是否等于二(它是)。
1 + 1 == 2
然后我们有一个逻辑 AND 运算符 (&&
),它检查两边的语句是否为真。至此,以上为真,继续处理。
最后我们将十乘以十 (100) 并检查它是否大于 50(是)。
10 * 10 > 50
最后,AND 运算符发现两个参数都为真,并给出我们的结果:
console.log(1 + 1 == 2 && 10 * 10 > 50);