javascript中的&& ||

來源:互聯網
上載者:User

標籤:false   字元   Null 字元串   執行   資料類型轉換   undefined   else   ble   bsp   

你是否看到過這樣的代碼:a=a||""; 可能javascript初學者會對此感到茫然。

其實:

a=a||"defaultValue";

與:

if(!a){    a="defaultValue";}

和:

if(a==null||a==""||a==undefined){    a="defaultValue";}

是等價的! 為了弄清這個問題,首先我們必須瞭解一個問題:javascript中資料類型在轉換為bool類型時發生了什麼。

在javascript中,資料類型可以分為“真值”和“假值”。顧名思義,真值轉換為bool時值為true;假值轉換為bool時值為false。下表羅列了一些常見的資料類型轉換為bool時的值:

 

資料類型 轉換為bool後的值
null FALSE
undefined FALSE
Object TRUE
function TRUE
0 FALSE
1 TRUE
0、1之外的數字 TRUE
字串 TRUE
""(Null 字元串) FALSE

 

在if運算式中,javascript首先將條件運算式轉換為bool類型,運算式為真值則執行if中的邏輯,否則跳過。

於是有了:

if(!a){    a="defaultValue";}

下面我們再來看“&&”、“||”兩個運算式。

由於javascript是弱類型語言,所以在javascript中這兩個運算式可能跟其他語言(比如java)中不太一樣。

在javascript中,“&&”運算子運演算法則如下:

如果&&左側運算式的值為真值,則返回右側運算式的值;否則返回左側運算式的值。

這就是說:

var i=""&&"真值";//->i=""i="真值"&&"其他真值";//->i="其他真值"i="真值"&&"";//->i=""

“||”運算子的運演算法則如下:

如果||左側運算式的值為真值,則返回左側運算式的值;否則返回右側運算式的值。

這就是說:

var i=""||"真值";//->i="真值"i="真值"||"其他真值";//->i="真值"i="真值"||"";//->i="真值"

於是,就可以理解:a=a||"defaultValue";的邏輯了。如果a為假值(等於null、Null 字元串……),則將"defaultValue"賦給a;否則將a的值賦給a本身。

下面我們運用||、&&來簡化程式:

var parameter="";function test(parameter){    //return 真值    return true;}//真值操作function operate1(parameter){    return "真值操作";}//假值操作function operate2(parameter){    return "假值操作";}var result=test(parameter)&&operate1(parameter);result=test(parameter)||operate2(parameter);//等價於result=test(parameter)?operate1(parameter):operate2(parameter);alert(result);//真值操作//也等價於if(test(parameter)){    result=operate1(parameter);}else{    result=operate2(parameter);}alert(result)//真值操作

 

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.