请问这句话的意思是什么:if (a && b == c){};?

5
请问这是什么意思:
if (a && b == c){};

我不理解这个条件语句的逻辑。

2个回答

7

&&的优先级低于==,因此它等效于:

if (a && (b == c))

这意味着如果a是真值,并且b的值等于c的值。

2
条件 (a && b == c) 包含两个 运算符。逻辑与运算符和相等运算符。
操作 foo && bar 当且仅当操作数 foobar 都有 真值 时返回 true。 foo == bar 当且仅当 foo 等于 bar 时返回 true。

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

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

运算符优先级决定了运算符相对于其他运算符的解析方式。具有较高优先级的运算符成为具有较低优先级的运算符的操作数。

== 运算符的优先级高于 && 运算符。因此,上述条件将首先检查 b == c。如果结果为 true 并且 a 的值为真值,条件的结果将为 true
分组运算符 ( ) 具有最高的优先级,因此可以用于强制执行特定的操作顺序。
如果您不确定操作的处理顺序,请使用分组运算符!
该结果为:
(a && (b == c)) 

将会和结果相同。
(a && b == c)

但是更易于阅读。当然,您应该学习并了解运算符的优先级。但是如果有疑问,尤其是在一个具有许多运算符的复杂代码行中,几个括号提高代码可读性所带来的价值很容易超过添加一些额外代码的成本。

1
不用谢。如果我的回答解决了您的问题,请考虑接受它。 - Olafant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接