JavaScript中Null与Undefined的区别解析


Posted in Javascript onJune 30, 2015

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

Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。

Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。

var oValue;  

alert(oValue == undefined); //output "true" 

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

alert(null == document.getElementById('notExistElement')); 

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

alert(typeof undefined); //output "undefined"  

alert(typeof null); //output "object" 

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

alert(null == undefined); //output "true" 

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

alert(typeof null == typeof undefined); //output "false" 

使用typeof方法在前面已经讲过,null与undefined的类型是不一样的,所以输出"false"。而===代表绝对等于,在这里null === undefined输出false。
Javascript 相关文章推荐
扩展jQuery对象时如何扩展成员变量具体怎么实现
Apr 25 Javascript
JavaScript生成SQL查询表单的方法
Aug 13 Javascript
jquery取消事件冒泡的三种方法(推荐)
May 28 Javascript
JS把内容动态插入到DIV的实现方法
Jul 19 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 Javascript
详解各版本React路由的跳转的方法
May 10 Javascript
javascript数组去重方法总结(推荐)
Mar 20 Javascript
使用taro开发微信小程序遇到的坑总结
Apr 08 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
Jul 04 Javascript
微信小程序纯文本实现@功能
Apr 08 Javascript
Vue实现导航栏菜单
Aug 19 Javascript
JS精髓原型链继承及构造函数继承问题纠正
Jun 16 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
Jun 30 #Javascript
深入探究使JavaScript动画流畅的一些方法
Jun 30 #Javascript
使用jQuery在对象中缓存选择器的简单方法
Jun 30 #Javascript
在Node.js应用中读写Redis数据库的简单方法
Jun 30 #Javascript
javascript日期计算实例分析
Jun 29 #Javascript
javascript处理a标签超链接默认事件的方法
Jun 29 #Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 #Javascript
You might like
浅谈PHP之ThinkPHP框架使用详解
2020/07/21 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
JavaScript学习笔记之数组求和方法
2016/03/23 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
vue图片上传组件使用详解
2019/12/23 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
python 从远程服务器下载东西的代码
2013/02/10 Python
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
利用python实现数据分析
2017/01/11 Python
pyshp创建shp点文件的方法
2018/12/31 Python
python科学计算之scipy——optimize用法
2019/11/25 Python
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
留学自荐信
2013/10/10 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
检讨书模板
2015/01/29 职场文书
2019军训心得体会
2019/06/27 职场文书
python 爬取华为应用市场评论
2021/05/29 Python
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
muduo TcpServer模块源码分析
2022/04/26 Redis