Javascript 中的 && 和 || 使用小結(jié)
普通情況下的 && 和 || 比較簡單,這里不進(jìn)行討論。
準(zhǔn)備兩個對象用于下面的討論。
var alice = {
name: "alice",
toString: function () {
return this.name;
}
}
var smith = {
name: "smith",
toString: function () {
return this.name;
}
}
在 javascript 中,對于 && 不僅僅可以用于 boolean 類型,也不僅僅返回 Boolean 類型的結(jié)果。
l 如果第一個操作數(shù)是 Boolean 類型,而且值為 false ,那么直接返回 false。
l 如果第一個操作數(shù)是 Boolean 類型,而且值為 true,另外一個操作數(shù)是 object 類型,那么將返回這個對象。
l 如果兩個操作數(shù)都是 object 類型,那么,返回第二個對象。
l 如果任何一個操作數(shù)是 null,那么,返回 null。
l 如果任何一個操作數(shù)是 NaN,那么返回 NaN。
l 如果任何一個操作數(shù)是 undefinded,那么返回 undefined。
alert(false && alice); // false
alert(true && alice); // alice
alert(alice && smith); // smith
alert(smith && alice); // alice
alert(null && alice); // null
alert(NaN && alice); // NaN
alert(undefined && alice); // undefined
alert(alice && undefined); // undefined
對于 || 來說,同樣也不僅僅用于 Boolean 類型,也不僅僅返回 Boolean 類型的結(jié)果。
事實上,null、undefined、NaN 都將被看作 false。而對象被當(dāng)作 true。
l 如果第一個操作數(shù)是 boolean 類型,而且值為 true, 那么,直接返回 true。
l 如果第一個操作數(shù)是 Boolean 類型,而且值為 false ,第二個操作數(shù)為 object,那么返回 object 對象。
l 如果兩個操作數(shù)都是 object 類型,那么返回第一個對象。
l 如果兩個操作數(shù)都是 null,那么,返回 null。
l 如果兩個操作數(shù)都是 NaN,那么返回 NaN。
l 如果兩個操作數(shù)都是 undefined,那么,返回 undefined。
alert(false || alice); // alice
alert(true || alice); // true
alert(alice || smith); // alice
alert(smith || alice); // smith
alert(null || alice); // alice
alert(alice || null); // alice
alert(null || null); // null
alert(NaN || alice); // alice
alert(alice || NaN); // alice
alert(NaN || NaN); // NaN
alert(undefined || alice); // alice
alert(alice || undefined); // alice
alert(undefined || undefined); // undefined
不用搞得這么復(fù)雜 推薦大家看這部分的說明
a && b : 將a, b轉(zhuǎn)換為Boolean類型, 再執(zhí)行邏輯與, true返回b, false返回a
a || b : 將a, b轉(zhuǎn)換為Boolean類型, 再執(zhí)行邏輯或, true返回a, false返回b
轉(zhuǎn)換規(guī)則:
對象為true
非零數(shù)字為true
非空字符串為true
其他為false
相關(guān)文章可以參考下面幾篇,綜合一下
js 與或運算符 || && 妙用
js利用與或運算符優(yōu)先級實現(xiàn)if else條件判斷表達(dá)式
javascript &&和||運算法的另類使用技巧
相關(guān)文章
JavaScript實現(xiàn)函數(shù)重載的代碼示例
在JavaScript中并沒有直接支持函數(shù)重載的機(jī)制,但是可以通過一些技巧來模擬函數(shù)重載的效果,比如使用參數(shù)判斷,使用默認(rèn)參數(shù),對象參數(shù),這些方法都可以實現(xiàn)類似函數(shù)重載的效果,所以本文就給大家介紹一下JavaScript如何實現(xiàn)函數(shù)重載,需要的朋友可以參考下2023-08-08PHP+jQuery+Ajax+Mysql如何實現(xiàn)發(fā)表心情功能
這篇文章通過php+jquery+ajax+mysql相結(jié)合,實現(xiàn)當(dāng)用戶瀏覽網(wǎng)站文章或者是論壇帖子后,想表達(dá)自己瀏覽后的心情,發(fā)表自己的感受,很多網(wǎng)站都提供了用戶發(fā)表心情的功能,通過此功能可以很直觀的分析文章或者是論壇對瀏覽者的用戶體驗度2015-08-08Ajax,UTF-8還是GB2312 eval 還是execScript
討厭的東西。 關(guān)于Ajax獲取HTML內(nèi)容編碼,與JavaScript載入腳本的動態(tài)執(zhí)行問題。2008-11-11javascript內(nèi)置對象Date案例總結(jié)分析
今天總結(jié)javascript內(nèi)置對象Date的使用,并且寫一個重要的網(wǎng)頁倒計時的核心算法案例,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03