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 相关文章推荐
javascript form 验证函数 弹出对话框形式
Jun 23 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
Sep 28 Javascript
3个可以改善用户体验的AngularJS指令介绍
Jun 18 Javascript
jquery使用Cookie和JSON记录用户最近浏览历史
Apr 19 Javascript
喜大普奔!jQuery发布 3.0 最终版
Jun 12 Javascript
JavaScript6 let 新语法优势介绍
Jul 15 Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 Javascript
AngularJs  Understanding Angular Templates
Sep 02 Javascript
JavaScript 总结几个提高性能知识点(推荐)
Feb 20 Javascript
js获取当前周、上一周、下一周日期
Mar 19 Javascript
javascript 的变量、作用域和内存问题
Apr 19 Javascript
vue实现拖拽进度条
Mar 01 Vue.js
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
NO3第三帝国留言簿制作过程
2006/10/09 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
php实现水仙花数示例分享
2014/04/03 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
全面了解javascript中的错误处理机制
2016/07/18 Javascript
Bootstrap php制作动态分页标签
2016/12/23 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
Pytorch 保存模型生成图片方式
2020/01/10 Python
Python如何获取文件指定行的内容
2020/05/27 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
python3 re返回形式总结
2020/11/20 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
数据库专业英语
2012/11/30 面试题
高中毕业生自我鉴定例文
2013/12/29 职场文书
董事长秘书职责
2014/01/31 职场文书
村级环境卫生整治方案
2014/05/04 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
布达拉宫导游词
2015/02/02 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL