Javascript 中的 && 和 || 使用小結(jié)
普通情況下的 && 和 || 比較簡(jiǎn)單,這里不進(jìn)行討論。
準(zhǔn)備兩個(gè)對(duì)象用于下面的討論。
var alice = {
name: "alice",
toString: function () {
return this.name;
}
}
var smith = {
name: "smith",
toString: function () {
return this.name;
}
}
在 javascript 中,對(duì)于 && 不僅僅可以用于 boolean 類型,也不僅僅返回 Boolean 類型的結(jié)果。
l 如果第一個(gè)操作數(shù)是 Boolean 類型,而且值為 false ,那么直接返回 false。
l 如果第一個(gè)操作數(shù)是 Boolean 類型,而且值為 true,另外一個(gè)操作數(shù)是 object 類型,那么將返回這個(gè)對(duì)象。
l 如果兩個(gè)操作數(shù)都是 object 類型,那么,返回第二個(gè)對(duì)象。
l 如果任何一個(gè)操作數(shù)是 null,那么,返回 null。
l 如果任何一個(gè)操作數(shù)是 NaN,那么返回 NaN。
l 如果任何一個(gè)操作數(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
對(duì)于 || 來(lái)說(shuō),同樣也不僅僅用于 Boolean 類型,也不僅僅返回 Boolean 類型的結(jié)果。
事實(shí)上,null、undefined、NaN 都將被看作 false。而對(duì)象被當(dāng)作 true。
l 如果第一個(gè)操作數(shù)是 boolean 類型,而且值為 true, 那么,直接返回 true。
l 如果第一個(gè)操作數(shù)是 Boolean 類型,而且值為 false ,第二個(gè)操作數(shù)為 object,那么返回 object 對(duì)象。
l 如果兩個(gè)操作數(shù)都是 object 類型,那么返回第一個(gè)對(duì)象。
l 如果兩個(gè)操作數(shù)都是 null,那么,返回 null。
l 如果兩個(gè)操作數(shù)都是 NaN,那么返回 NaN。
l 如果兩個(gè)操作數(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ù)雜 推薦大家看這部分的說(shuō)明
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ī)則:
對(duì)象為true
非零數(shù)字為true
非空字符串為true
其他為false
相關(guān)文章可以參考下面幾篇,綜合一下
js 與或運(yùn)算符 || && 妙用
js利用與或運(yùn)算符優(yōu)先級(jí)實(shí)現(xiàn)if else條件判斷表達(dá)式
javascript &&和||運(yùn)算法的另類使用技巧
相關(guān)文章
javascript-簡(jiǎn)單的計(jì)算器實(shí)現(xiàn)步驟分解(附圖)
輸入內(nèi)容的判斷,對(duì)于事件對(duì)象的來(lái)源的判斷以及數(shù)學(xué)運(yùn)算“+,-,*,/”的使用,感興趣的朋友可以學(xué)習(xí)下2013-05-05
javascript實(shí)現(xiàn)隨時(shí)變化著的背景顏色
這篇文章主要介紹了javascript實(shí)現(xiàn)隨時(shí)變化著的背景顏色的方法,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以直接拿走。2015-04-04
Math.js解決js中小數(shù)精度丟失問(wèn)題
在JavaScript中進(jìn)行小數(shù)運(yùn)算時(shí),會(huì)容易出現(xiàn)精度丟失的問(wèn)題,例如在進(jìn)行兩個(gè)小數(shù)相加時(shí),結(jié)果并不是預(yù)期的精確值,而是一個(gè)近似值,,使用第三方庫(kù)Math.js可以避免精度丟失的問(wèn)題,本文導(dǎo)入Math.js庫(kù)和使用Math.js的方法來(lái)進(jìn)行小數(shù)運(yùn)算,同時(shí)還可以指定格式來(lái)保留小數(shù)位數(shù)2023-12-12
微信小程序?qū)崿F(xiàn)日期格式化和倒計(jì)時(shí)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)日期格式化和倒計(jì)時(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
Json字符串轉(zhuǎn)換為JS對(duì)象的高效方法實(shí)例
一般JSON字符串轉(zhuǎn)換為JS對(duì)象,都使用var jsonStr="{a:1}";var jsonObj = eval("("+jsonStr+")");2013-05-05
詳細(xì)教你微信公眾號(hào)正文頁(yè)SVG交互開(kāi)發(fā)技巧
這篇文章主要介紹了詳細(xì)教你微信公眾號(hào)正文頁(yè)SVG交互開(kāi)發(fā)技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
js計(jì)算字符串長(zhǎng)度包含的中文是utf8格式
使用js寫(xiě)的計(jì)算字符串長(zhǎng)度且其中中文是utf8格式的,具體的實(shí)現(xiàn)如下,感興趣的朋友可以參考下2013-10-10

