JS基本概念 -- 操作符 -- 布爾操作符

來源:互聯網
上載者:User

標籤:

布爾操作符一共有三個: 非(Not)、與(AND)、或(OR)

  1. 邏輯非邏輯非操作符由一個歎號(!)表示,可以應用於ECMAScript中的任何值。無論這個值是什麼類型,這個操作符都會返回一個布爾值。邏輯非操作符首先將他的運算元轉換為一個布爾值,再對其求反。
    //1.如果運算元是一個對象,返回falsevar o = {    name: "ss"};alert(!o);    //falsevar o1 = {};alert(!o1);    //false//2.如果運算元是一個Null 字元串,返回truevar str1 = "";alert(!str1);    //true//3.如果運算元是一個非Null 字元串,返回falsevar str2 = "name";alert(!str2);    //false//4.如果運算元值是0,返回truevar num = 0;alert(!num);    //true//5.如果運算元是任意非0數值(包括Infinity),返回falsevar num1 = 23;alert(!num1);    //falsevar num2 = Number.MAX_VALUE * Number.MAX_VALUE;alert(!num2);    //false//6.如果運算元是null,返回truevar str3 = null;alert(!str3);    //true//7.如果運算元是NaN,返回truevar str4 = "ccc";str4++;alert(str4);    //NaNalert(!str4);    //true//8.如果運算元是undefined,返回truevar val;alert(val);    //undefinedalert(!val);//true

    邏輯非操作符也可用於將一個值轉換為與其對應的布爾值。而同時使用兩個邏輯非操作符,實際上就會類比Boolean()轉型函數的行為。最終結果與對這個值使用Boolean()函數相同。

    alert(!!"blue"); //truealert(!!0);        //falsealert(!!NaN);    //falsealert(!!"");    //false
  2. 邏輯與

    邏輯與操作符由兩個和號(&&)


    邏輯與屬於短路操作,即如果第一個運算元能夠決定結果,那麼就不會再對第二個運算元求值。對於邏輯與操作而言,如果第一個運算元是false,則無論第二個運算元是什麼值,結果都不在可能是true。

    var found = true;var result = (found && someUndefinedVariable);    //這裡會發生錯誤alert(result);    //這一行不會執行//上述代碼會發生錯誤,因為變數someUndefinedVariable沒有聲明。由於found的值是true,所以邏輯與操作符會繼續對後面的變數求值。var found1 = false;var result1 = (found1 && someUndefinedVariable);    alert(result1);    //false
  3. 邏輯或

    邏輯或操作符由兩個豎線符號( || )表示,有兩個運算元。

    邏輯或操作符也是短路操作,如果第一個運算元的求值結果為true,就不會對第二個運算元求值了。

    var found = false;var result = (found || someUndefinedVariable);    //這裡會發生錯誤alert(result);    //這一行不會執行//上述代碼會發生錯誤,因為變數someUndefinedVariable沒有聲明。由於found的值是false,所以邏輯與操作符會繼續對後面的變數求值。var found1 = true;var result1 = (found1 || someUndefinedVariable);    alert(result1);    //true

    我們可以利用邏輯或的這一行為來避免為變數賦null 或 undefined值。

    var preferrdObject;var backupObject = "ccc"var myObject = preferrdObject || backupObject;alert(myObject);    //ccc/* *變數myObject將被賦予等號後面兩個值中的一個。變數preferrdObject會優先賦給myObject值。 *變數backupObject負責在preferrdObject中不包含有效值的情況下提供後備值. *如果preferrdObject的值不是null,那麼將他的值賦給myObject *如果preferrdObject的值是null,則將backupObject的值賦給myObject */

     

 

JS基本概念 -- 操作符 -- 布爾操作符

聯繫我們

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