十年專注于品牌網站建設 十余年專注于網站建設_小程序開發_APP開發,低調、敢創新、有情懷!
      南昌百恒網絡微信公眾號 掃一掃關注
      小程序
      tel-icon全國服務熱線:400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡微信小程序

      百恒網絡

      南昌百恒網絡

      結合實例詳細介紹ECMAScript 布爾操作符屬性及應用技巧

      百恒網絡 2012-02-13 5376

      ECMAScript 布爾操作符(邏輯非、邏輯與、邏輯或)

      布爾操作符 在一門編程語言中,布爾操作符的重要性堪比相等操作符。如果沒有測試兩個值關系的能力,那么諸如if...else和循環之類的語句就不會有用武之地了。布爾操作符一共有3個:非(NOT)、與 (AND)和或(OR)。

      1.邏輯非

      邏輯非操作符由一個嘆號(!)表示,可以應用于ECMAScript中的任何值。無論這個值是什么數據類型,這個操作符都會返回一個布爾值。邏輯非操作符首先會將它的操作數轉換為一個布爾值,然后再對其求反。也就是說,邏輯非操作符遵循下列規則:

      ◎如果操作數是一個對象,返回false;

      ◎如果操作數是一個空字符串,返回七rue;

      ◎如果操作數是一個非空字符串,返回false;

      ◎如果操作數是數值0,返回true;

      ◎如果操作數是任意非0數值(包括Infinity),返回false;

      ◎如果操作數是null,返回true;

      ◎如果操作數是NaN,返回true;

      ◎如果操作數是undefined,返回true。

      下面幾個例子展示了應用上述規則的結果:

      alert(! false); //true

      alert(!"blue"); //false

      alert(1 0); //true

      alert(! NaN); //true

      aler七(!""); //true

      alert( !12345); //false

      邏輯非操作符也可以用于將一個值轉換為與其對應的布爾值。而同時使用兩個邏輯非操作符,實際上就會模擬Bolean()轉型函數的行為。其中,第一個邏輯非操作會基于無論什么操作數返回一個布爾值,而第二個邏輯非操作則對該布爾值求反,于是就得到了這個值真正對應的布爾值。當然,最終結果與對這個值使用Boolean()函數相同,如下面的例子所示:

      alert(!!"blue"); //true

      alert(!1 0); //false

      alert(!!NaN); //false

      alert(!!‘’“); //false

      alert(!!12345); //true

      2.邏輯與

      邏輯與操作符由兩個和號(&&)表示,有兩個操作數,如下面的例子所示:

      var result=true&&false;

      邏輯與的真值表如下:

      第一個操作數第二個操作數結果

      truetruetrue

      truefalsefalse

      falsetruefalse

      falsefalsefalse

      南昌網頁設計公司前端開發工程師小結:邏輯與操作可以應用于任何類型的操作數,而不僅僅是布爾值。在有一個操作數不是布爾值的情況下,邏輯與操作就不一定返回布爾值;此時,它遵循下列規則:

      ◎如果第一個操作數是對象,則返回第二個操作數;

      ◎如果第二個操作數是對象,則只有在第一個操作數的求值結果為true的情況下才會返回該對象;

      ◎如果兩個操作數都是對象,則返回第二個操作數;

      ◎如果有一個操作數是null,則返回null:

      ◎如果有一個操作數是NaN,則退回NaN:

      ◎如果有一個操作數是undefined,則返回undefined。

      邏輯與操作屬于短路操作,即如果第一個操作數能夠決定結果,那么就不會再對第二個操作數求值。對于邏輯與操作而言,如果第一個操作數是false,則無論第二個操作數是什么值,結果都不再可能是true了。來看下面的例子:

      var found=true;

      var result=(found&&s。meUndefinedVariable); //這里會發生錯誤

      alert(result); //這一行不會執行

      在上面的代碼中,當執行邏輯與操作時會發生錯誤,因為變量someUndefinedVariable沒有聲明。由于變量found的值是true,所以邏輯與操作符會繼續對變量someUndefinedVariable求值。

      someUndefinedVariable尚未定義,因此就會導致錯誤。這說明不能在邏輯與操作中使用未定義的值。如果像下面這個例中一樣,將found的值設置為false,就不會發生錯誤了:

      var ound = true;

      var result=(found&& someUndefinedVariable); //不會發錯誤

      alert (result); //會執行("false")

      在這個例子中,警告框會顯示出來。無論變量someUndefinedVariable有沒有定義,也永遠不對它求值,因為第一個操作數的值是false。而這也就意味著邏輯與操作的結果必定是false,根本用不著再對&&右側的操作數求值了。在使用邏輯與操作符時要始終銘記它是一個短路操作符。

      3.邏輯或

      邏輯或操作符由兩個豎線符號(||)表示,有兩個操作數,如下面的例子所示:

      var result=true || false;

      邏輯或的真值表如下:

      第一個操作數第二個操作數結果

      truetruetrue

      truefalsetrue

      falsetruetrue

      falsefalsefalse

      南昌做網站公司前端開發工程師對邏輯或進行小結:與邏輯與操作相似,如果有一個操作數不是布爾值,邏輯或也不一定返回布爾值;此時,它遵循下列規則:

      ◎如果第一個操作數是對象,則返回第一個操作數;

      ◎如果第一個操作數的求值結果為false,則返回第二個操作數;

      ◎如果兩個操作數都是對象,則返回第一個操作數;

      ◎如果兩個操作數都是null,則返回null;

      ◎如果兩個操作數都是NaN,則返回NaN;

      ◎如果兩個操作數都是unde fined,則返回undefined。

      與邏輯與操作符相似,邏輯或操作符也是短路操作符。也就是說,如果第一個操作數的求值結果為true,就不會對第二個操作數求值了。下面看一個例子:

      var found=true;

      var result= (found || someUndefinedVariable}; //不會發生錯誤

      alert (result); //會執行("true")

      這個例子跟前面的例子一樣,變量someUnde finedVariable也沒有定義。但是,由于變量found的值是true.而變量someUndefinedVariable永遠不會被求值,因此結果就會輸出"true"。如果像下面這個例子一樣,把found的值改為false.

      var found = false;

      var result=(found || someUndefinedVariable); //這里會發生錯誤

      alert (result); //這一行不會執行

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

      var myObject=preferredObject || backupObject;

      在這個例子中,變量myObj ect將被賦予等號后面兩個值中的一個。變量preferredObject中包含優先賦給變量myObj ect的值,變量backupObj ect負責在preferredObject中不包含有效值的情況下提供后備值。如果preferredObjec七的值不是null,那么它的值將被賦給myObject;如果是null,則將backupObject的值賦給myObj ect。ECMAScript程序的賦值語句經常會使用這種模式,南昌網站建設公司百恒網絡也將采用這種模式。

      希望本文對廣大站長或從事企業網站建設公司的團隊有所幫助,如對此不太理解的,可以與南昌網絡公司百恒網絡技術部聯系。我們很高興與廣大站長和從事企業網站建設公司技術人員分享我們的技術和經驗。


      400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡小程序

      歡迎您的光顧,我們將竭誠為您服務×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務 售后服務
       
      售后服務 售后服務
       
      備案專線 備案專線
       
      ×
      欧美日韩国产免费一区二区三区| 精品综合久久久久久蜜月| 自拍偷在线精品自拍偷无码专区 | 国产精品久久久久久久小说| 日本国产成人精品视频| 久久99精品久久久久久动态图| 久久国产精品电影| 日本久久久精品中文字幕| 国内精品免费久久影院| 亚洲А∨精品天堂在线| 亚洲日韩AV无码一区二区三区人| 凹凸精品视频分类国产品免费| 无码日韩人妻精品久久| 国产SUV精品一区二区四| 亚洲日韩一区精品射精| 思思久久好好热精品国产| 孩交videos精品乱子豆奶视频| 亚洲国产精品午夜电影| 2021国产精品久久久久| 91久久精品一区二区| 91精品福利一区二区三区野战| 精品无码国产一区二区三区AV| 99精品中文字幕| 久久国产乱子伦免费精品| 蜜臀久久99精品久久久久久小说| 久久丝袜精品综合网站| 久久96精品国产| 久久精品国产亚洲av麻豆小说| 91精品视频在线免费观看| 中国精品白嫩bbwbbw| 久久久久久精品免费看SSS| 久久久久久精品免费免费自慰| 国产精品手机在线| 99久久国产亚洲综合精品| 亚洲欧美综合精品成人导航| 亚洲精品国产suv一区88| 亚洲AV无码成人精品区狼人影院| 久久精品无码一区二区三区不卡| 老司机亚洲精品影院在线观看| 国产精品自线在线播放| 国产日韩久久免费影院|