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

2016-02-19 10:28 11 1 收藏

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐区分JS中的undefined,null,"",0和false,无聊中的都看过来。

【 tulaoshi.com - Web开发 】

在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值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"给弄得迷糊了好一阵子。

来源:https://www.tulaoshi.com/n/20160219/1594761.html

延伸阅读
标签: 宝宝
宝宝自己玩:0-3岁的独立游戏 如果有一天,你发现宝宝一个人在房间里玩得不亦乐乎,你应该为他感到高兴,这是宝宝独自游戏的开始。千万别打破这个小小的私人空间,让他充分享受独自游戏的机会和乐趣。放手让宝宝自己玩独自游戏是宝宝自立的萌芽。爸爸妈妈要给孩子独立的私人空间和时间,放手让他们自己玩。这并不等于说父母可以对宝宝大撒把...
标签: 学习 孩子
如何让孩子主动学习 不少家长抱怨孩子学习不自觉,让人操心。不少老师也感觉到,孩子学习的依赖性特别强,从收拾书包到做作业,处处透着家长的影子。与此同时,孩子的自主学习能力越来越差。如果孩子缺乏自主学习的能力,会直接影响成绩的提高和自信心的形成,严重的还可能引起厌学情绪,家长应该引起关注。问题:学习依赖性强镜头一:幼儿园...
标签: 电脑入门
出现这个错误,可能是硬件的问题,也可能是软件的问题。但是,由于硬件引起该问题的概率很小,并且除了更换硬件之外没有更好的解决方法,因此本文将详细介绍如何通过软件解决此问题,这也是大家最关心的。 方法一、简便万能,一键修复,使用DirectX修复工具。 该款软件采用傻瓜式一键操作,只要点一个按钮,就能自动完成校验、检测、修复、注...
标签: Web开发
"文档"窗口 "文档"窗口显示当前文档。可以选择下列任一视图: "设计"视图是一个用于可视化页面布局、可视化编辑和快速应用程序开发的设计环境。在该视图中,Dreamweaver 显示文档的完全可编辑的可视化表示形式,类似于在浏览器中查看页面时看到的内容。 "代码"视图是一个用于编写和编辑 HTML、JavaScript、服务器语言代码(如...
标签: Web开发
以下代码结果为:FALSE,TRUE,TRUE      请问结果中为什么第一个为FALSE?      form   name=form1      字符串:input   name="t1"   value="123456"      模式:/input   ...

经验教程

751

收藏

99
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部