在 JavaScript 中, 逻辑运算符可以操作 ECMAScript 中的任意值, 同时也不强制返回 boolean 类型.
在 JS 逻辑操作中, 需要隐式的转换为 boolean 类型再计算. 转换规则:
对象, 非零 Number, 非空 String -> true
0,"",nullfalse,undefined,NAN -> false
!! 的作用是把一个其他类型的变量转换成 bool 类型
在 || 和 && 逻辑操作中的短路原则:
a && b: 左操作数为 false, 返回左操作数, 否则返回右操作数.
a || b: 左操作数为 false 时, 返回右操作数, 否则返回左操作数.
对于多个操作数的情况:
a||b||c||d: 若结果为 true 则返回第一个 true 值, 若结果为 false 则返回最后一个操作数.
a&&b&&c&&d: 若结果为 false 则返回第一个 false, 若结果为 true 则返回最后一个操作数.
使用场景:
1,|| 操作符最常用的方式是用来从一组备选表达式中选出第一个真值表达式.
var max = max_width || perferences.max_width || 500;
2, 判断某个元素是否存在时, if(attr) 写成 if(!!attr) 更严谨.
3, 对函数中的参数赋给默认值, a = a || "defaultValue".
4, 利用 && 的短路特性有条件的执行代码.
在回调中,
callback && callback()
, 先判断 callback 是否存在, 存在才执行.
条件语句: if (a == b) stop(); 换成 (a == b) && stop();.
判断某个对象存在再取值: p && p.x.
来源: http://www.bubuko.com/infodetail-3350263.html