请给出什么意思:
if (a && b == c){};
我不了解条件语句的逻辑
&&
的优先级低于 ==
,因此等效于:
if (a && (b == c))
这意味着如果a
具有真实的值,并且b
的值等于c
的值。
条件(a && b == c)
有两个操作员。逻辑和操作员以及平等运算符。
操作foo && bar
返回true,如果操作数foo
和bar
都有真实的值。
foo == bar
返回true,如果foo
等于bar
。
平等操作员如果不具有相同类型的操作数,则使用严格的比较。如果两个操作数是对象,则JavaScript比较操作数时与内存中相同对象相同的内部引用。
如果表达式包含多个操作员,则操作员优先级至关重要。
操作员的优先级决定了彼此解析操作员的方式。优先级的运营商成为较低优先级的运营商的操作数。
==
操作员的预定率高于&&
操作员。因此,上述条件将首先检查b == c
。如果结果是true
,而a
的值是真实的,则条件的结果将为true
。
分组操作员( )
具有最高的优先级,因此可以用来强制特定的操作顺序。
如果您不确定要处理哪些订单操作,请使用分组操作员!
的结果(a && (b == c))
将与
的结果相同(a && b == c)
,但更好可读。当然,您应该学习并了解操作员的优先级。但是,如果有疑问,尤其是在带有许多操作员的一条真正毛茸茸的线路上,那么一些括号增加可读性的价值可能会优于一些其他代码的成本。