我无法理解Eloquent JS书中的以下示例:
console.log(
1 + 1 == 2 && 10 * 10 > 50 // true
);
有人可以一步一步地向我解释吗?
答案 0 :(得分:2)
+
的优先级为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 :(得分:0)
首先,我们有一个加一,我们正在检查是否等于(等于)二。
1 + 1 == 2
然后我们有一个逻辑AND运算符(&&
),它检查其两边的语句是否正确。到目前为止,以上都是正确的,因此处理继续进行。
最后,我们将十乘以十(100),并检查它是否大于50(是)。
10 * 10 > 50
最后,AND运算符看到两个参数都为真,并给出了结果:
console.log(1 + 1 == 2 && 10 * 10 > 50);