Bar*_*mar 8

&&具有比更低的优先级==,因此它等效于:

if (a && (b == c))
Run Code Online (Sandbox Code Playgroud)

这意味着如果a具有真实值,并且的值b也等于的值c


Ola*_*ant 2

该条件(a && b == c)有两个运算符。逻辑与运算符等于运算符

如果两个操作数和都有值,则该运算foo && bar返回 true 。foobar

foo == barfoo如果等于则返回 true bar

如果操作数不是同一类型,则相等运算符会对其进行转换,然后应用严格比较。如果两个操作数都是对象,那么当操作数引用内存中的同一对象时,JavaScript 会比较内部引用是否相等。

如果表达式包含多个运算符,则运算符优先级至关重要。

运算符优先级决定了运算符之间相互解析的方式。优先级较高的运算符成为优先级较低的运算符的操作数。

运算符==的优先级高于运算符&&。因此将首先检查上述条件b == c。如果结果为true且 的值为a真,则条件的结果将为true

分组运算符( )具有最高优先级,因此可用于强制执行特定的操作顺序。

如果您不确定操作的处理顺序,请使用分组运算符!

的结果

(a && (b == c)) 
Run Code Online (Sandbox Code Playgroud)

将与以下结果相同

(a && b == c)
Run Code Online (Sandbox Code Playgroud)

但可读性更好。当然,您应该学习并了解运算符的优先级。但是,如果有疑问,尤其是在包含大量运算符的真正毛茸茸的行中,几个括号增加可读性的价值可以轻松超过几位附加代码的成本。