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);