Javascript–Boolean運算子

來源:互聯網
上載者:User

Boolean運算子有3種:

1.邏輯NOT

邏輯NOT由!表示.與邏輯OR和邏輯AND運算子不同的是:邏輯NOT運算子返回的一定是Boolean值.

邏輯NOT運算子的行為如下:

    • 如果運算數是對象,返回false
    • 如果運算數是0以外的其他任何數字,返回false
    • 如果運算數是0,返回true
    • 如果運算數是null,返回true
    • 如果運算數是NaN,返回true
    • 如果運算數是undefined,發生錯誤
    • 對Boolean值求非,從而得到真正的Boolean值

例子:

        function display(value){            document.write(value+"<br/>");        }                display(!new Object());                display(!100);        display(!0);        display(!null);        display(!NaN);        display(!true);        display(!false);                //undefined        display(!ss);

結果:

總結:

  • 如果運算數是0,null,NaN以及未定義的值,則求非之後,結果為true
  • 如果運算數是0以外的任何數字或對象,則求非之後,結果為false

2.邏輯AND運算子

邏輯AND運算子由&&表示.邏輯AND是簡便運算,即:如果第一個運算數決定了結果,就不再計算第二個運算數,對於邏輯與來說,如果第一個運算數是false,無論第二個運算數的值是什麼,都不可能等於true.

下面採用真值的方式來描述:

第一個運算元 第二個運算元 結果
true true true
true false false
false true false
false false false

邏輯AND運算子的運算數可以是任何類型的,不止是Boolean值.如果某個運算數不是原始的Boolean值,邏輯AND並不一定返回Boolean值.

    • 如果第一個運算數是對象,那麼返回第二個運算數
    • 如果某個運算數是null,則返回null
    • 如果某個運算數是NaN,則返回NaN
    • 如果某個運算數是undefined,則發生錯誤

例子:

        function display(value){            document.write(value+"<br/>");        }                var trueValue = true;        var falseValue = false;                var obj1 = new Object();        obj1.name="obj1";                var obj2 =new Object();        obj2.name="obj2";                var result;        //如果第一個運算數是對象,另一個運算數是Boolean值,則返回Boolean值        result = obj1 && trueValue;        display(result);         result = obj1 && falseValue;        display(result);                 //如果第一個運算數是Boolean值,則會按照簡便運算方式運行        result = trueValue && obj1;//obj1 && true;        display(result.name);        result = falseValue && obj1;        display(result);          display(trueValue && 'www')                        //如果兩個運算數都是對象,則返回第二個對象        result = obj1 && obj2;        display(result.name);                  //如果某個運算數是null,則返回null        result = obj1 && null;        display(result);                //如果某個運算數是NaN,則返回NaN        result = obj1 && NaN;        display(result);                //如果某個運算數是undefined,則發生錯誤        result = obj1 && ss;        display(result);

結果:

總結:

  • 當變數為null,NaN以及未定義值的時候和false一樣,擁有否決權,分別返回null,NaN,undefined.
  • 當運算數為對象時,都將通過運算.如果第一個運算數通過運算,那麼將返回第二個運算數.
  • 當運算數未被聲明時,引發錯誤.

3.邏輯OR運算子

邏輯OR運算子由||表示.邏輯OR運算子也是簡便運算,如果第一個運算數為true,則不再計算第二個運算數.

下面採用真值的方式來描述:

第一個運算元 第二個運算元 結果
true true true
true false true
false true true
false false false

邏輯OR運算子的運算數可以是任何類型的,不止是Boolean值.如果某個運算數不是原始的Boolean值,邏輯OR並不一定返回Boolean值.

    • 如果第一個運算數是對象,則返回該對象
    • 如果第一個運算數為false,null,NaN,undefined,第二個運算數為null,則返回null
    • 如果第一個運算數為false,null,NaN,undefined,第二個運算數為NaN,則返回NaN
    • 如果第一個運算數為false,null,NaN,undefined,第二個運算數為undefined,則引發錯誤.

例子:

        function display(value){            document.write(value+"<br/>");        }                var trueValue = true;        var falseValue = false;                var obj1 = new Object();        obj1.name="obj1";                var obj2 =new Object();        obj2.name="obj2";                var result;                       //如果第一個運算數是對象,則返回該對象        result = obj1 || trueValue;        display(result.name);         result = obj1 || falseValue;        display(result.name);                         result = obj1 || obj2;        display(result.name);                  //如果第一個運算數為false,null,NaN,undefined,第二個運算數為null,則返回null        display(false || null);                //如果第一個運算數為false,null,NaN,undefined,第二個運算數為NaN,則返回NaN        display(null || NaN);                //如果第一個運算數為false,null,NaN,undefined,第二個運算數為undefined,則引發錯誤        display(NaN || ss);        display(ss || ss);

結果:

相關文章

聯繫我們

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