逻辑运算 Logical operators
短路计算 Short-circuit evaluation
短路表达式,JS逻辑计算有一个短路计算原则, MDN描述如下:由于逻辑表达式的运算的顺序是从左到右的,利用其规则进行“短路”运算。
JS逻辑运算符的说明:
运算法 | 示例 | 说明 |
---|---|---|
逻辑与(&&) | expr1 && expr2 | 如果expr1 能转换成false则返回expr1,否则返回expr2 因此, 在Boolean环境中使用时, 两个操作结果都为true时返回true,否则返回false. |
逻辑或(ll) | expr1 ll expr2 | 如果expr1能转换成true则返回expr1,否则返回expr2. 因此,在boolean环境(在if的条件判断中)中使用时, 二者操作结果中只要有一个为true,返回true; 二者操作结果都为false时返回false. |
逻辑非(!) | !expr | 如果单个表达式能转换为true的话返回false,否则返回true. |
能够转换为false的表达式有:””(空字符串), 0和NaN, false, null, undefined.
短路计算 Short-circuit evaluation
由于逻辑表达式的运算的顺序是从左到右,也可以用以下规则进行”短路”计算:
- false && (anything) 短路计算的结果为false.
- true || (anything) 短路计算的结果为 true
理解为逻辑中断。
是否执行第二个语句(操作数)取决于第一个操作数的结果
案例
- 在需要访问某个对象的属性时,使用这个特性可以事先检测该对象是否为空:var name = o && o.getName();
- 或运算可以用来设置默认值:var name = otherName || “default”;