色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

區(qū)分JS中的undefined,null,"",0和false

在程序語(yǔ)言中定義的各種各樣的數(shù)據(jù)類(lèi)型中,我們都會(huì)為其定義一個(gè)"空值"或"假值",比如對(duì)象類(lèi)型的空值null,.NET Framework中數(shù)據(jù)庫(kù)字段的空值DBNull,boolean類(lèi)型的假值false等等。在JavaScript中也有很多種的"空值"和"假值",那么它們都有什么共同點(diǎn)和不同點(diǎn)呢?

    其實(shí)標(biāo)題里面我已經(jīng)列出了JavaScript中所有的"空值"和"假值",除了boolean值本身就是true和false這兩種情況外,其它數(shù)據(jù)類(lèi)型的"空值"主要是undefined和defined這兩大類(lèi)。這些空值的類(lèi)型分別是: 
復(fù)制代碼 代碼如下:
 typeof(undefined) == 'undefined' 
 typeof(null) == 'object' 
 typeof("") == 'string' 
 typeof(0) == 'number' 
 typeof(false) == 'boolean' 

    這五個(gè)值的共同點(diǎn)是,在if語(yǔ)句中做判斷,都會(huì)執(zhí)行false分支。當(dāng)然從廣義上來(lái)看,是說(shuō)明這些數(shù)值都是其對(duì)應(yīng)數(shù)據(jù)類(lèi)型上的無(wú)效值或空值。還有這五個(gè)值作!運(yùn)算,結(jié)果全為:true。

    這幾個(gè)值中也有不同,其中undefined和null比較特殊,雖然null的類(lèi)型是object,但是null不具有任何對(duì)象的特性,就是說(shuō)我們并不能執(zhí)行null.toString()、null.constructor等對(duì)象實(shí)例的默認(rèn)調(diào)用。所以從這個(gè)意義上來(lái)說(shuō),null和undefined有最大的相似性。看看null == undefined的結(jié)果(true)也就更加能說(shuō)明這點(diǎn)。不過(guò)相似歸相似,還是有區(qū)別的,就是和數(shù)字運(yùn)算時(shí),10 + null結(jié)果為:10;10 + undefined結(jié)果為:NaN。

    另外""、0和false雖然在if語(yǔ)句表現(xiàn)為"假值",可它們都是有意義數(shù)據(jù),只是被作為了"空值"或"假值",因?yàn)椋?".toString(),(0).toString()和false.toString()都是合法的可執(zhí)行表達(dá)式。

    其實(shí)這5個(gè)值在上面所說(shuō)的這些差異里,并不太會(huì)給程流程控制帶來(lái)太大的問(wèn)題,那么要區(qū)分它們什么呢?需要注意區(qū)分的是這些值在轉(zhuǎn)換為String時(shí)的差異是比較大的,它們到String的轉(zhuǎn)換關(guān)系是: 
復(fù)制代碼 代碼如下:
 String(undefined) -> "undefined" 
 String(null) -> "null" 
 String("") -> "" 
 String(0) -> "0" 
 String(false) -> "false" 

    這個(gè)轉(zhuǎn)換關(guān)系在做字符串累加時(shí)需要特別的注意,否這會(huì)出些意想不到的問(wèn)題,今天就遇到一個(gè)null被默認(rèn)轉(zhuǎn)為"null"給弄得迷糊了好一陣子。

JavaScript技術(shù)區(qū)分JS中的undefined,null,"",0和false,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 祁门县| 西青区| 汽车| 吉木萨尔县| 平湖市| 岑溪市| 万载县| 卓资县| 香格里拉县| 兰坪| 鄢陵县| 固镇县| 靖西县| 靖宇县| 修武县| 南投市| 泉州市| 三江| 涟水县| 上栗县| 修水县| 太仆寺旗| 丰镇市| 华安县| 峨山| 日土县| 明水县| 亚东县| 铜鼓县| 吴旗县| 金山区| 深圳市| 民和| 米泉市| 芜湖市| 全州县| 新津县| 西林县| 长顺县| 津市市| 万全县|