javascript
javascript “||”、“”的运用
你是否看到過(guò)這樣的代碼:a=a||""; 可能javascript初學(xué)者會(huì)對(duì)此感到茫然。今天就跟大家分享一下我的一些心得。
其實(shí),以下三種方式是完全等價(jià)的
a=a||"defaultValue"; if(!a){a="defaultValue";} if(a==null||a==""||a==undefined){a="defaultValue";}為了弄清這個(gè)問(wèn)題,首先我們必須了解一個(gè)問(wèn)題:javascript中數(shù)據(jù)類型在轉(zhuǎn)換為bool類型時(shí)發(fā)生了什么。
?
在javascript中,數(shù)據(jù)類型可以分為“真值”和“假值”。顧名思義,真值轉(zhuǎn)換為bool時(shí)值為true;假值轉(zhuǎn)換為bool時(shí)值為false。下表羅列了一些常見(jiàn)的數(shù)據(jù)類型轉(zhuǎn)換為bool時(shí)的值:
| 數(shù)據(jù)類型 | 轉(zhuǎn)換為bool后的值 |
| null | FALSE |
| undefined | FALSE |
| Object | TRUE |
| function | TRUE |
| 0 | FALSE |
| 1 | TRUE |
| 0、1之外的數(shù)字 | TRUE |
| 字符串 | TRUE |
| ""(空字符串) | FALSE |
在if表達(dá)式中,javascript首先將條件表達(dá)式轉(zhuǎn)換為bool類型,表達(dá)式為真值則執(zhí)行if中的邏輯,否則跳過(guò)。
于是有了:
if(!a){a="defaultValue";}再來(lái)看“&&”、“||”兩個(gè)表達(dá)式。
由于javascript是弱類型語(yǔ)言,所以在javascript中這兩個(gè)表達(dá)式可能跟其他語(yǔ)言(比如java)中不太一樣。
在javascript中,“&&”運(yùn)算符運(yùn)算法則如下:
如果&&左側(cè)表達(dá)式的值為真值,則返回右側(cè)表達(dá)式的值;否則返回左側(cè)表達(dá)式的值。
這就是說(shuō):
var i=""&&"真值";//->i=""i="真值"&&"其他真值";//->i="其他真值"i="真值"&&"";//->i=""一句話:?&&若都為真返回最后一個(gè);若有一個(gè)不為真,返回第一個(gè)為false(可能是fasle,0,undefined ,null,"")的值
于是,就可以理解:
a=a||"defaultValue";的邏輯了。如果a為假值(等于null、空字符串……),則將"defaultValue"賦給a;否則將a的值賦給a本身。
一句話:||返回左面第一個(gè)真值;如果都為false,否則返回最后一個(gè)false(可能是false,0,undefined,null,"")的值
原貼地址:?http://my249645546.iteye.com/blog/1553202
轉(zhuǎn)載于:https://www.cnblogs.com/fuxinci/archive/2012/11/06/2756436.html
總結(jié)
以上是生活随笔為你收集整理的javascript “||”、“”的运用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Clover Configurator
- 下一篇: 一行 Python 代码,20款经典小游