Javascript 中的 && 和 || 使用小結

來源:互聯網
上載者:User

標籤:

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

 1     var alice = { 2         name: "alice", 3         toString: function () { 4             return this.name; 5         } 6     }; 7     var smith = { 8         name: "smith", 9         toString: function () {10             return this.name;11         }12     } 

在 javascript 中,對於 && 不僅僅可以用於 boolean 類型,也不僅僅返回 Boolean 類型的結果。
l 如果第一個運算元是 Boolean 類型,而且值為 false ,那麼直接返回 false。
l 如果第一個運算元是 Boolean 類型,而且值為 true,另外一個運算元是 object 類型,那麼將返回這個對象。
l 如果兩個運算元都是 object 類型,那麼,返回第二個對象。
l 如果任何一個運算元是 null,那麼,返回 null。
l 如果任何一個運算元是 NaN,那麼返回 NaN。
l 如果任何一個運算元是 undefinded,那麼返回 undefined。

 1 alert(false && alice); // false 2 alert(true && alice); // alice 3  4 alert(alice && smith); // smith 5 alert(smith && alice); // alice 6  7 alert(null && alice); // null 8 alert(NaN && alice); // NaN 9 alert(undefined && alice); // undefined10 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。

 1 alert(false || alice);         // alice 2  3 alert(true || alice);          // true 4  5 alert(alice || smith);         // alice 6  7 alert(smith || alice);         // smith 8  9 alert(null || alice);       // alice10 11 alert(alice || null);       // alice12 13 alert(null || null);        // null14 15 alert(NaN || alice);        // alice16 17 alert(alice || NaN);        // alice18 19 alert(NaN || NaN);          // NaN20 21 alert(undefined || alice);     // alice22 23 alert(alice || undefined);     // alice24 25 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

 

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.