1、||(邏輯或),
從字面上來說,只有前後都是false的時候才返回false,否則返回true。
?
1
2
3
4
alert(
true
||
false
);
// true
alert(
false
||
true
);
// true
alert(
true
||
true
);
// true
alert(
false
||
false
);
// false
這個傻子都知道~~
但是,從深層意義上來說的話,卻有另一番天地,試下面**
?
1
alert(0||1);
//1
顯然,我們知道,前面0意味著false,而後面1意味著true,那麼上面的結果應該是true,而事實返回的結果是1。再看下面**:
?
1
alert(2||1);
//2
我們知道,前面2是true,後面1也是true,那返回結果又是什麼呢?測試結果是2,繼續看:
?
1
alert(
'a'
||1);
//'a'
同樣,前面'a'是true,後面1也是true;測試結果是'a',下面
?
1
alert(
''
||1);
//1
由上,我們知道前面」是false,後面1是true,而返回結果是1。再看下面
?
1
alert(
'a'
||0);
//'a'
前面'a'是true,而後面0是false,返回結果是'a',繼續下面
?
1
alert(
''
||0);
//0
前面」是false,後面0同樣是false,返回結果是0
?
1
alert(0||
''
);
//''
前面0是false,後面」是false,返回結果是」
這就意味
1、只要「||」前面為false,不管「||」後面是true還是false,都返回「||」後面的值。
2、只要「||」前面為true,不管「||」後面是true還是false,都返回「||」前面的值。
我稱這種為短路原理: 知道了前面第乙個的結果就知道後的輸出,如果為第乙個為:true,則取第乙個的值,如果第乙個為false,則取第二個的值。
js必須牢記的6個蛋蛋: 請你一定要記住:在js邏輯運算中,0、」「、null、false、undefined、nan都會判為false,其他都為true(好像沒有遺漏了吧,請各位確認下)。這個一定要記住,不然應用||和&&就會出現問題。
這裡順便提下:經常有人問我,看到很多**if(!!attr),為什麼不直接寫if(attr);
其實這是一種更嚴謹的寫法:
請測試 typeof 5和typeof !!5的區別。!!的作用是把乙個其他型別的變數轉成的bool型別。
2.&&(邏輯與)
從字面上來說,只有前後都是true的時候才返回true,否則返回false。
?
1
2
3
4
alert(
true
&&
false
);
// false
alert(
true
&&
true
);
// true
alert(
false
&&
false
);
// false
alert(
false
&&
true
);
// false
然後,根據上面經驗,我們看看「&&」號前後,不單單是布林型別的情況。
?
1
alert(
''
&&1);
//''
結是返回」,「&&」前面」是false,後面是1是true。
?
1
alert(
''
&&0);
//''
結是返回」,「&&」前面」是false,後面是0也是false。
?
1
alert(
'a'
&&1);
//1
結是返回1,「&&」前面」a是true,後面是1也是true。
?
1
alert(
'a'
&&0);
//0
結是返回0,「&&」前面」a是true,後面是0是false。
?
1
alert(
'a'
&&
''
);
//''
結是返回」,「&&」前面」a是true,後面是」是false。
?
1
alert(0&&
'a'
);
//0
結是返回0,「&&」前面」0是false,後面是'a'是true。
?
1
alert(0&&
''
);
//0
結是返回0,「&&」前面」0是false,後面是」也是false。
短路原理
1、只要「&&」前面是false,無論「&&」後面是true還是false,結果都將返「&&」前面的值;
2、只要「&&」前面是true,無論「&&」後面是true還是false,結果都將返「&&」後面的值;
JavaScript的操作符
01 一元操作符 操作符應用任何型別數值都返回乙個 數值型別 先將任意型別的值轉換為number然後進行運算 通過number 方法進行轉換 1.遞增 var a 11 1 a 1 a 前置 操作該變數之前進行遞增或者遞減操作 後置 操作該變數之後進行遞增或者遞減操作 對任意資料型別的運算元都適用,...
JavaScript中比較操作符
var s var ss 0 typeof s為string 字串為空 則表示boolean型別的false number中0代表false 1代表true typeof false為boolean 值要相同,同時型別也要相同,屬於嚴格上的比較 if ss false alert 不嚴格比較 n字串...
JavaScript操作符優雅運用
if hasmoney elsehasmoney console.log 今天吃肉 console.log 今天吃素 let weekendplan hasmoney 今天吃肉 今天吃素 if hasmoney hasmoney console.log 今天是工作日 undefined hasmon...