js中的邏輯操作符包括!(邏輯非),&&(邏輯與),||(邏輯或),
!邏輯非:對一個操作數的布爾值取反,可通過!!取得操作數的布爾值類型,如下代碼(空數組的布爾值爲true,空字符的布爾值爲false)
console.log(!0);//true
console.log(!!0);//false
console.log(![]);//false
console.log(!![]);//true
console.log(!"");//true
console.log(!!"");//false
&&邏輯與:二元操作符,第一個操作數的布爾值爲true,則值爲第二個操作數,第一個操作符的布爾值爲false則值爲第一個操作數。
var result=true&&3;//3
var result=1&&3;//3
var result=[]&&'';//''
var result=''&&3;//''
var result=false&&3;//false
var result=null&&true;//null
要注意的是邏輯或是短路操作,如果第一個操作數的布爾值是false,則第二個操作數不被執行,如下代碼:
var num=0;
var result=false&&num++;
console.log(num);//0;
||邏輯或:與邏輯與的操作很相似,但取值剛好相反,當第一個操作數的布爾值爲true時,則值爲第一個操作數,第一個操作數的布爾值爲false時,則值爲第二個操作數。同樣邏輯或的操作是短路操作,當第一個操作數的布爾值爲true時,第二個操作數不會被執行。示例代碼:
var result=true||3;//true
var result=1||3;//1
var result=[]||'';//[]
var result=''||3;//3
var result=false||3;//3
var result=null||true;//true
var num=0;
var result=true||num++;
console.log(num);//0
運算符優先級詳細參考鏈接:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence