可能重复:
Javascript 条件顺序评估
if 语句中的多个条件如何产生?
if( bacon && bacon == "crispy") {
self.eat(bacon);
}
如果bacon
不存在,它还会尝试检查是否bacon
“脆”吗?
可能重复:
Javascript 条件顺序评估
if 语句中的多个条件如何产生?
if( bacon && bacon == "crispy") {
self.eat(bacon);
}
如果bacon
不存在,它还会尝试检查是否bacon
“脆”吗?
不,它使用短路评估,所以如果评估 LHS 意味着它不需要评估 RHS,它就不会。
这在 JavaScript 中经常被利用...
foo = foo || "bar";
如果foo
为真(LHS),则该条件已知true
并且foo
将被赋予其值(这些条件返回最后评估的表达式)。
但是,如果foo
是falsy,它将评估 RHS 表达式,然后将该结果分配给foo
。
&& 运算符是 JavaScript 中的短路运算符,如果第一个条件为假,它将阻止对语句的其余部分进行评估。