JavaScript 布爾操作符解析 || !

來源:互聯網
上載者:User

1、邏輯非

邏輯非用!表示,可以應用與ECMAScript的任何類型的值,邏輯非操作返回的是一個布爾值(true/false)。該操作符首先會將它的運算元轉換為一個布爾值,然後再對其求反。

下面說明下Boolean()轉型函數的一組規則。

資料類型 轉換為true的值 轉換為false的值
Boolean true false
String   任何非Null 字元串 ""(Null 字元串)
Number  任何非零數字值(包括無窮大) 0和NaN
Object 任何對象 null
Undefined undefined

Boolean()轉型函數的簡便表示方法。-----------!!

2、邏輯與

邏輯與操作符由兩個和號(&&)表示,有兩個運算元。

邏輯與操作可以應用於任何類型的運算元,而不僅僅是布爾值。在有一個運算元不是布爾值的情況下,邏輯與操作就不一定返回布爾值;此時,它遵循一下規則:

1. 如果第一個運算元是對象,則返回第二個運算元;
2. 如果第二個運算元是對象,則只有在第一個運算元的求值結果為true的情況下才會返回該對象;
3. 如果兩個操作符都是對象,則返回第二個運算元; 遵循第一規則。
4. 如果有一個操作是null,則返回null;
5. 如果有一個操作符是NaN,則返回NaN;
6. 如果有一個操作符是undefined,則返回undefined。

邏輯與操作屬於短路操作,即如果第一運算元能夠決定結果,那麼就不會再對第二個運算元求值。(可以理解為內部的兩個return操作)。因此當4、5、6規則衝突時,遵循短路操作原則。

複製代碼 代碼如下:var nul = null;
var na = NaN;
var test;
test = na&&nul;
document.write(test); //NaN 複製代碼 代碼如下:var nul = null;
var na = NaN;
var test;
test = nul&&na;
document.write(test); //null

因此,我們來總結一下。&&操作主要遵循幾大原則:

1.短路操作原則;
2.求值過程中會被轉型產生副本,但是傳回值是原來值;

複製代碼 代碼如下:// 虛擬碼
function &&(param1,param2){
bparam1 = Boolean(param1);
if (!bparam1) return param1;
bparam2 = Boolean(param2);
return param2;
}
// 參數是一個對象時返回引用的指標值,函數同

3、邏輯或

邏輯或符號由兩個豎線符號(||)表示。
邏輯或符號同樣是短路操作符。其實現過程可以參照邏輯與的虛擬碼。這裡就不再列出一些規則了。
邏輯或常常用來做參數的預設處理,比如 evt = evt || window.event;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.