JavaScript - 逻辑运算符&&和||

一. 逻辑与&&(短路操作符,操作数1为false时不执行操作数2)

情况 返回值
false && 操作数2 返回操作数1,不执行操作数2
true && 操作数2 返回操作数2
  • 注意:false和true是指操作数经过转换之后的布尔值,也就是说操作数可以是所有类型。
  • 只有6种情况会被判断为false(undefined、null、空字符串、NaN、false、0),如果操作数1是这六种情况,那么直接返回操作数1。
逻辑与&&例子 结果
undefined && 4 undefined
null && 4 null
'' && 4 ""
0 && 4 0
NaN && 4 NaN
false && 4 false
  • 逻辑与操作符可用于简写if判断
function check(num){  
    (num > 10) && num++; 
    return num;   
}
console.log(check(11));// 12
console.log(check(9));// 9

二. 逻辑或||(也是短路操作符,操作数1为true时不执行操作数2)

情况 返回值
false || 操作数2 返回操作数2
true || 操作数2 返回操组数1,不执行操作数2
  • 注意:这里的false和true同样是经过转换后的布尔值,详细见上面6种情况。
逻辑或||例子 结果
undefined || 4 4
null || 4 4
'' || 4 4
0 || 4 0
NaN || 4 4
false || 4 4
  • 逻辑或操作符可用于设置参数默认值(很多经典书籍常用的方法)
function show(x){
     return x || 10;
}
console.log(show(1));// 1
console.log(show());// 10

三. 综合例子(注意,&&优先级大于||

  1. 0 && 2 || 1
    结果为1。
    第一步:执行0 && 20 被判断为false,直接返回0
    第二步:执行0 || 10被判断为false,返回1
  2. 1 || 0 && 2
    结果为1.
    第一步:逻辑与运算优先级高,先执行0 && 20 被判断为false,直接返回0
    第二步:执行1 || 01被判断为true,直接返回1
  3. 1 && 0 || 2 && 0
    结果为0。
    第一步:执行1 && 01被判断为true,直接返回0
    第二步:逻辑与运算优先级高,先执行2 && 02被判断为true,直接返回0
    第三步:执行0 || 0,返回0

你可能感兴趣的:(JavaScript - 逻辑运算符&&和||)