Javascript 中的 和 || 使用小結

來源:互聯網
上載者:User

普通情況下的 && 和 || 比較簡單,這裡不進行討論。

準備兩個對象用於下面的討論。

複製代碼 代碼如下:var alice = {
name: "alice",
toString: function () {
return this.name;
}
}

var smith = {
name: "smith",
toString: function () {
return this.name;
}
}

在 javascript 中,對於 && 不僅僅可以用於 boolean 類型,也不僅僅返回 Boolean 類型的結果。
l 如果第一個運算元是 Boolean 類型,而且值為 false ,那麼直接返回 false。
l 如果第一個運算元是 Boolean 類型,而且值為 true,另外一個運算元是 object 類型,那麼將返回這個對象。
l 如果兩個運算元都是 object 類型,那麼,返回第二個對象。
l 如果任何一個運算元是 null,那麼,返回 null。
l 如果任何一個運算元是 NaN,那麼返回 NaN。
l 如果任何一個運算元是 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 類型的結果。
事實上,null、undefined、NaN 都將被看作 false。而對象被當作 true。

l 如果第一個運算元是 boolean 類型,而且值為 true, 那麼,直接返回 true。
l 如果第一個運算元是 Boolean 類型,而且值為 false ,第二個運算元為 object,那麼返回 object 對象。
l 如果兩個運算元都是 object 類型,那麼返回第一個對象。
l 如果兩個運算元都是 null,那麼,返回 null。
l 如果兩個運算元都是 NaN,那麼返回 NaN。
l 如果兩個運算元都是 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

不用搞得這麼複雜 推薦大家看這部分的說明
a && b : 將a, b轉換為Boolean類型, 再執行邏輯與, true返回b, false返回a
a || b : 將a, b轉換為Boolean類型, 再執行邏輯或, true返回a, false返回b
轉換規則:
對象為true
非零數字為true
非Null 字元串為true
其他為false

相關文章可以參考下面幾篇,綜合一下
js 與或運算子 || && 妙用
js利用與或運算子優先順序實現if else條件判斷運算式
javascript &&和||運演算法的另類提示

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.