天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

區分JS中的undefined,null,"",0和false

在程序語言中定義的各種各樣的數據類型中,我們都會為其定義一個"空值"或"假值",比如對象類型的空值null,.NET Framework中數據庫字段的空值DBNull,boolean類型的假值false等等。在JavaScript中也有很多種的"空值"和"假值",那么它們都有什么共同點和不同點呢?

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

    這五個值的共同點是,在if語句中做判斷,都會執行false分支。當然從廣義上來看,是說明這些數值都是其對應數據類型上的無效值或空值。還有這五個值作!運算,結果全為:true。

    這幾個值中也有不同,其中undefined和null比較特殊,雖然null的類型是object,但是null不具有任何對象的特性,就是說我們并不能執行null.toString()、null.constructor等對象實例的默認調用。所以從這個意義上來說,null和undefined有最大的相似性。看看null == undefined的結果(true)也就更加能說明這點。不過相似歸相似,還是有區別的,就是和數字運算時,10 + null結果為:10;10 + undefined結果為:NaN。

    另外""、0和false雖然在if語句表現為"假值",可它們都是有意義數據,只是被作為了"空值"或"假值",因為:"".toString(),(0).toString()和false.toString()都是合法的可執行表達式。

    其實這5個值在上面所說的這些差異里,并不太會給程流程控制帶來太大的問題,那么要區分它們什么呢?需要注意區分的是這些值在轉換為String時的差異是比較大的,它們到String的轉換關系是: 
復制代碼 代碼如下:
 String(undefined) -> "undefined" 
 String(null) -> "null" 
 String("") -> "" 
 String(0) -> "0" 
 String(false) -> "false" 

    這個轉換關系在做字符串累加時需要特別的注意,否這會出些意想不到的問題,今天就遇到一個null被默認轉為"null"給弄得迷糊了好一陣子。

JavaScript技術區分JS中的undefined,null,"",0和false,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲成人精品 | 亚洲AV无码乱码国产麻豆P | AV久久久囯产果冻传媒 | 办公室韩国电影免费完整版 | 99视频免费在线 | 亚洲 欧美 国产 综合久久 | 白丝制服被啪到喷水很黄很暴力 | 在线 自拍 综合 亚洲 欧美 | 久久综合视频网站 | 爽死你个放荡粗暴小淫货漫画 | 岛国片免费在线观看 | 丰满的女友1在线观看 | 99久免费精品视频在线观看2 | 收集最新中文国产中文字幕 | 两个客户一起吃我的奶 | 热巴两次用约老师屁股发底线球 | 国产精品高清免费网站 | 国产女人视频免费观看 | 九九色精品国偷自产视频 | 国产亚洲精品久久孕妇呦呦你懂 | 阿娇和冠希13分钟在线观看 | 我的美女奴隶 | 国产精品99久久免费黑人人妻 | 欧美成人精品高清在线观看 | 校园全肉高h湿一女多男 | 伊人久久综在合线影院 | 青娱乐极品视觉盛宴av | 国产人妻777人伦精品HD | 噜噜噜狠狠夜夜躁精品 | 精品性影院一区二区三区内射 | 国产电影午夜成年免费视频 | 亚洲人成网站7777视频 | 久久秋霞理伦片 | 好男人在线观看视频观看高清视频免费 | 免费人成在线观看视频不卡 | 国产精品一区二区三区免费 | 免费视频网站嗯啊轻点 | 国产亚洲精品欧洲在线视频 | 国产精品视频第一区二区三区 | 东京热无码中文字幕av专区 | 韩国精品无码少妇在线观看网站 |