在JavaScript中存在这样两种原始类型:Null与Undefined。这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined?

Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。
Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。

js 代码
  1. var oValue;
  2. alert(oValue == undefined); //output "true"

这段代码显示为true,代表oVlaue的值即为undefined,因为我们没有初始化它。

js 代码
  1. alert(null == document.getElementById('notExistElement'));

当页面上不存在id为"notExistElement"的DOM节点时,这段代码显示为"true",因为我们尝试获取一个不存在的对象。

js 代码
  1. alert(typeof undefined); //output "undefined"
  2. alert(typeof null); //output "object"

第一行代码很容易理解,undefined的类型为Undefined;第二行代码却让人疑惑,为什么null的类型又是Object了呢?其实这是JavaScript最初实现的一个错误,后来被ECMAScript沿用下来。在今天我们可以解释为,null即是一个不存在的对象的占位符,但是在实际编码时还是要注意这一特性。

js 代码
  1. alert(null == undefined); //output "true"

ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。但是,如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法。

js 代码
  1. alert(null === undefined); //output "false"
  2. alert(typeof null == typeof undefined); //output "false"

使用typeof方法在前面已经讲过,null与undefined的类型是不一样的,所以输出"false"。而===代表绝对等于,在这里null === undefined输出false。

最新文章

  1. spring-boot - demo
  2. 【翻译】Kinect v2程序设计(C++-) AudioBeam篇
  3. Cocos2d-JS引入资源
  4. 细究UTF-8,GB2312及ISO-8859-1区别
  5. 关于c#中委托使用小结
  6. ios开发相关网站
  7. Js设置所有连接是触发/swt/的代码
  8. Android -------- RelativeLayout 和 LinearLayout 的性能分析
  9. C语言初学 数学中带根号的复杂计算问题
  10. uva 1596 Bug Hunt
  11. linux学习之十、变量的取用与配置:echo, 变量配置守则, unset
  12. Android性能检测--traceview工具各个参数的意思
  13. hdu 3076 ssworld VS DDD (概率dp)
  14. SQL SERVER 2005中如何获取日期(一个月的最后一日、上个月第一天、最后一天、一年的第一日等等)
  15. aws部署从无到有
  16. Web开发的发展史
  17. linux下64位汇编的系统调用(2)
  18. 详解Django的CSRF认证
  19. 微信小程序http连接访问解决方案
  20. zookeepeer4字命令实践

热门文章

  1. JDK 6和JDK 7的intern方法之不同
  2. 实现checkebox全选取消操作
  3. 006_Mac下sublime text 的“package control”安装,sublimepackage
  4. centos7 安装java和tomcat9
  5. 3.Springboot之修改启动时的默认图案Banner
  6. dedecms调用文章列表第一篇和下面几篇不同的方法
  7. Linux学习笔记:rm删除文件和文件夹
  8. Atom编辑器试用(Win7)
  9. https页面打不开
  10. spring boot配置文件中 spring.mvc.static-path-pattern 配置项