【发布时间】:2019-03-11 16:48:01
【问题描述】:
请问这是什么意思:
if (a && b == c){};
条件语句的逻辑我没看懂
【问题讨论】:
标签: javascript logical-operators
请问这是什么意思:
if (a && b == c){};
条件语句的逻辑我没看懂
【问题讨论】:
标签: javascript logical-operators
&& 的优先级低于==,因此相当于:
if (a && (b == c))
这意味着如果a 具有真值,并且b 的值等于c 的值。
【讨论】:
条件(a && b == c) 有两个operators。 Logical AND Operator 和 Equality Operator。
如果操作数 foo 和 bar 都具有 truthy 值,则操作 foo && bar 返回 true。
foo == bar 返回 true,如果 foo 等于 bar。
如果操作数不是同一类型,相等运算符将转换它们,然后应用严格比较。如果两个操作数都是对象,那么当操作数引用内存中的同一个对象时,JavaScript 会比较相等的内部引用。
如果一个表达式包含多个运算符,operator precedence 是最重要的。
运算符优先级决定了运算符相互之间的解析方式。高优先级的运算符成为低优先级运算符的操作数。
== 运算符的优先级高于 && 运算符。因此上述条件将首先检查b == c。如果结果为true且a的值为真,则条件的结果为true。
分组运算符( ) 具有最高优先级,因此可用于强制执行特定的操作顺序。
如果您不确定将处理哪些顺序操作,请使用分组运算符!
结果
(a && (b == c))
将与
的结果相同(a && b == c)
但可读性更好。当然你应该学习并知道运算符的优先级。但是,如果有疑问,尤其是在有很多运算符的非常复杂的行中,几个括号增加可读性的价值很容易超过几位额外代码的成本。
【讨论】: