⑴ && : 當全部條件都爲true的時候, 返回true; 只要有一個爲false, 則返回false; 返回的不必定是boolean值.cdn
一、能夠操做任意類型的數據,不僅是布爾型;(除了null、undefined、NaN不會隱式轉換)
var a = 33,b=55,c=88
console.log(a<b&&b<c);//返回true
若是在有一個操做數不是布爾值得狀況下,邏輯與就不必定返回布爾值,此時它遵循下列規則
- 若是前面操做數隱式類型轉換後爲true,則返回最後一個操做數:
console.log(77&&33);//返回33
console.log(true&&9&&"您好");//返回「您好」
console.log(80 && true );//返回true
- 若是前面有一個隱式轉換後不是true,則返回第一個隱式轉換爲false的值(即短路的值)
console.log(「」&&true);//返回空格
console.log(44&&0&&"hello");//返回0
console.log(55&&false&&0);//返回false
console.log(0&&null&&55);//返回0
console.log(NaN && 16 && "");//返回NaN
console.log("" && NaN && 12);//返回「」空字符串
二、返回值不必定是boolean類型。null,返回null;undefined,返回undefined;NaN,返回NaN
console.log(55*「abc」&&true);//返回NaN
console.log(null&&true);//返回null
console.log(undefined&&true);//返回undefined
console.log(undefined&&null&&9&&NaN);//返回undefined
⑵ ||:只要一個條件爲true,則返回true;都爲false,則返回false
一、能夠操做任意類型的數據,不僅是布爾型;
二、返回值不必定是boolean類型。
(有一個爲true,則返回true,後面就被短路啦;都爲false,一直走到最後一個,打印左後一個)
console.log(33<22||33>11);//返回true
console.log(undefined || null || 0);//返回0
console.log(undefined || 88 || 99 );//返回88
console.lof(undefined || 33>10 || false);//返回true
console.log(null || undefined || NaN);//返回NaN
console.log(NaN || undefined) ;//返回undefined
console.log("hellow" || NaN);//返回hellow
⑶ !(邏輯非):返回值必定是boolean值
一、能夠操做任意類型的數據,返回值必定是boolean值;
二、!!同時使用兩個邏輯非操做符時——兩次求反,爲原本表明的boolean值
console.log(!false);//true
console.log(!88);//false
console.log(!NaN);//true
console.log(!!NaN);//false
console.log(!!"hell");//true