Javascript条件订单评估

atp*_*atp 30 javascript

当表达式中的一个条件导致错误时,我可以依靠Javascript立即失败吗?

f = {'a':'b'};
if (f.a !== undefined || f.a === 'b') {
  // Is this OK to use, because the second condition will never be evaluated?
}
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 48

是的,这被称为短路评估.

对于AND逻辑运算符,如果第一个求值为false,则从不评估第二个,因为条件已经足够了解已经满足.

使用OR逻辑运算符,如果是第一个false,它将评估第二个.否则,如果第一个是true它将不会评估第二个(不需要).

这也是你看到...的原因

var a = function(b) {
   b = b || 7;
}
Run Code Online (Sandbox Code Playgroud)