当表达式中的一个条件导致错误时,我可以指望Javascript立即失败吗?
f = {'a':'b'};
if (f.a !== undefined || f.a === 'b') {
// Is this OK to use, because the second condition will never be evaluated?
}
答案 0 :(得分:46)
是的,这被称为short circuit evaluation。
使用AND
逻辑运算符,如果第一个求值为false
,那么第二个永远不会被评估,因为条件已经知道已经足够了。
使用OR
逻辑运算符,如果第一个运算符是false
,它将评估第二个运算符。否则,如果第一个是true
,它将不会评估第二个(不需要)。
这也是你看到......
的原因var a = function(b) {
b = b || 7;
}