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 事件冒泡的介绍以及如何阻止事件冒泡
Dec 25 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
jQuery下拉友情链接美化效果代码分享
Aug 26 Javascript
html+js+highcharts绘制圆饼图表的简单实例
Aug 04 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
Sep 01 Javascript
vue2.0使用swiper组件实现轮播效果
Nov 27 Javascript
jQuery封装animate.css的实例
Jan 04 jQuery
Node.js如何对SQLite的async/await封装详解
Feb 14 Javascript
vue里的data要用return返回的原因浅析
May 28 Javascript
基于JavaScript判断两个对象内容是否相等
Jan 10 Javascript
JavaScript对象属性操作实例解析
Feb 04 Javascript
token 机制和实现方式
Dec 15 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
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
在PHP中使用模板的方法
2008/05/24 PHP
使用PHP会话(Session)实现用户登陆功能
2013/06/29 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
laravel自定义分页效果
2017/07/23 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
javascript常用的方法分享
2015/07/01 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
ES6 对象的新功能与解构赋值介绍
2019/02/05 Javascript
node使用request请求的方法
2019/12/20 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
Jupyter安装链接aconda实现过程图解
2020/11/02 Python
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
工伤事故赔偿协议书
2014/10/27 职场文书
2015年档案室工作总结
2015/05/23 职场文书
个人向公司借款协议书
2016/03/19 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python
总结一些Java常用的加密算法
2021/06/11 Java/Android
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL