&&(且)与 || (或)这两个逻辑运算符并不会让人陌生,用法有很多。以下是一些总结与心得:
一个大前提,在js逻辑运算中,0(数字0)、”“(空字符串)、null(空值)、false(布尔值false)、undefined(未初始化未定义数据)、NaN(非数字特殊值)都会判为false,其他都为true。
1. || 逻辑或运算符实例
1||0 // 前面是true 后面是false 返回 1
1||2 //前面是true 后面是true 返回1
0||1 //前面是false 后面是true 返回1
0 || ' ' //前面是false 后面也是false 返回 ' '
以上情况可以总结为:
短路原理----只要或运算符前 一个值为真 后一个值无论真假都 返回的是前一个值 ,而只要前一个值为假 后一个值无论真假都返回后一个值。
实战用法:
a = a || 'defaultValue' //使a获得初始值 字符串 defaultValue 使代码更严谨,优雅
function getEvent(e){
var e = e || window.event; //用于兼容ie浏览器 如果在ie浏览器下 参数值为空 前面的值为false 所以就将全局对象event赋值给e
}
2.&& 逻辑且运算符实例
1&&0 // 前面是true 后面是false 返回 0
1&&2 //前面是true 后面是true 返回2
0&&1 //前面是false 后面是true 返回0
0 && ' ' //前面是false 后面也是false 返回0
以上情况可以总结为:
短路原理----只要且运算符前 一个值为真 后一个值无论真假都 返回的是后一个值 ,而只要前一个值为假 后一个值无论真假都返回前一个值。
实战用法:
a && $('body').addclass('active'); //先判断a是否为真 再执行后面的addclass()
callback && callback() //先判断回调是否存在 再执行回调 以免报错