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

2016-02-19 10:28 14 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"给弄得迷糊了好一阵子。

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

延伸阅读
标签: 学习 孩子
如何让孩子主动学习 不少家长抱怨孩子学习不自觉,让人操心。不少老师也感觉到,孩子学习的依赖性特别强,从收拾书包到做作业,处处透着家长的影子。与此同时,孩子的自主学习能力越来越差。如果孩子缺乏自主学习的能力,会直接影响成绩的提高和自信心的形成,严重的还可能引起厌学情绪,家长应该引起关注。问题:学习依赖性强镜头一:幼儿园...
标签: 电脑入门
出现这个错误,可能是硬件的问题,也可能是软件的问题。但是,由于硬件引起该问题的概率很小,并且除了更换硬件之外没有更好的解决方法,因此本文将详细介绍如何通过软件解决此问题,这也是大家最关心的。 方法一、简便万能,一键修复,使用DirectX修复工具。 该款软件采用傻瓜式一键操作,只要点一个按钮,就能自动完成校验、检测、修复、注...
标签: 孩子
帮助孩子直接面对挫折 在超市里,4岁的亮亮看到自己爱吃的糖果,要求妈妈买,妈妈不同意,亮亮便纠缠不休,但妈妈的态度很坚决。当亮亮意识到今天他无论如何也得不到糖果了,他气急败坏起来,转身从货架上抓了两个桔子,狠狠地摔到了地上。看到亮亮的行为,妈妈很是震惊。但事实上,亮亮并不另类,很多孩子都会这么做。孩子为何频频受挫?⊙3...
标签: Web开发
"文档"窗口 "文档"窗口显示当前文档。可以选择下列任一视图: "设计"视图是一个用于可视化页面布局、可视化编辑和快速应用程序开发的设计环境。在该视图中,Dreamweaver 显示文档的完全可编辑的可视化表示形式,类似于在浏览器中查看页面时看到的内容。 "代码"视图是一个用于编写和编辑 HTML、JavaScript、服务器语言代码(如...
标签: Web开发
在网上找到一个用ASP开的假线程,发现和我以前做的一个程序不谋而合,只不过以前用的是VB,摘下来,储备. 1.原理实验 原理当然都一样,利用web服务器支持多线程,在同一页面里向服务器发多个http请求来完成我们的工作。还是先实验一下,在一个页面里同时写2个txt文件,比较写入时间的差异。代码如下: % startime=timer() ''----------asp实现多...

经验教程

340

收藏

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