// ||短路表达式 var foo = a || b; // 相当于 if(a){ foo = a; }else{ foo = b; } // &&短路表达式 var bar = a && b; // 相当于 if(a){ bar = b; }else{ bar = a; }
天天在看到,但不一定真的理解
这里需要提出一些值得注意的点:
1、在 Javascript 的逻辑运算中,0、""、null、false、undefined、NaN 都会判定为 false ,而其他都为 true ;
2、因为 Javascript 的内置弱类型域 (weak-typing domain),所以对严格的输入验证这一点不太在意,即便使用 && 或者 || 运算符的运算数不是布尔值,仍然可以将它看作布尔运算。
if(foo){ ... } //不够严谨 if(!!foo){ ... } //更为严谨,!!可将其他类型的值转换为boolean类型
注重细节,JavaScript 既不弱也不低等,我们只是需要更努力一点工作以使我们的代码变得真正健壮。