js邏輯操作符(!,&&,||)與運算符優先級

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章