JS基础逻辑运算符

逻辑运算符对操作数进行布尔运算,经常和关系运算符配合使用,逻辑运算符分为逻辑非!、逻辑与&&和逻辑或||,可以应用于任何数据类型

逻辑非

逻辑非用!表示,它会先把操作数转为布尔值,然后再取反。如果同时使用两个逻辑非操作符,则相当于使用Boolean()转型函数。

!!'a'; // true
!!'';  // false

!!1;   // true
!!0;   // false

!!true;  // true
!!false;  // false

!!null;  // false
!!undefined; // false
!!NaN; // false

!!{}; // true
!![]; // true

逻辑与

逻辑与用两个和号&&表示,要两个操作数,当操作数都为true时返回true,否则返回false。

逻辑与可以应用于任何数据类型,当操作数不是布尔值时,返回结果也不一定是布尔值。

逻辑与属于短路操作,如果第一个操作数能决定结果,则不对第二个操作数求值。

逻辑与运算求值过程,如果第一个操作数是false,结果返回第一个操作数;如果第一个操作数是true,无论第二个操作数是true还是false,返回第二个操作数。


'' && 'a'; // ''

'a' && 'b'; // 'b' 
'a' && ''; // ''

逻辑与运算符可以连用,返回第一个布尔值为false的表达式

'a' && 'b' && null && ''; // null

关系运算符的优先级高于逻辑与和逻辑或,所以关系表达式可以不加圆括号。

if( a==2 && b==3) {
	// todo
}

应用一:代替if语句

if(a === b) {
	do()
}

// 等价于

(a === b) && do()

应用二:用于回调函数

function fn(cb) {
  if(cb) {
   cb()
  }
}
// 等价于

function fn(cb) {
  cb && cb()
}

逻辑或

逻辑或运算用||表示,要两个操作数,当两个操作数有都为false时返回false,否则返回true

逻辑或也可以应用于任何数据类型,当操作数不是布尔值时,返回结果也不一定是布尔值。

逻辑或也属于短路操作,如果第一个操作数能决定结果,则不对第二个操作数求值。

逻辑或运算求值过程,如果第一个操作数是true,结果返回第一个操作数;如果第一个操作数是false,无论第二个操作数是true还是false,返回第二个操作数。


'' || 'a'; // 'a'

'a' || 'b'; // 'a' 
'a' || ''; // 'a'

逻辑或运算符可以连用,返回第一个布尔值为true的表达式

'a' || 'b' || null || ''; // 'a'

应用:为变量设置默认值

function fn(a) {
  var b = a || '' 
}
优秀文章首发于聚享小站,欢迎关注!
原文地址:https://www.cnblogs.com/yesyes/p/15351356.html