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 相关文章推荐
js 鼠标点击事件及其它捕获
Jun 04 Javascript
读jQuery之八 包装事件对象
Jun 21 Javascript
js如何设置在iframe框架中指定div不显示
Dec 04 Javascript
jquery队列queue与原生模仿其实现方法分享
Mar 25 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
Mar 14 Javascript
jQuery实现的瀑布流加载效果示例
Sep 13 Javascript
在JSP中如何实现MD5加密的方法
Nov 02 Javascript
jQuery用FormData实现文件上传的方法
Nov 21 Javascript
vue鼠标悬停事件实例详解
Apr 01 Javascript
vue中使用v-model完成组件间的通信
Aug 22 Javascript
JS工厂模式开发实践案例分析
Oct 17 Javascript
JS实现导航栏楼层特效
Jan 01 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开发者的10个技巧
2011/02/25 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php使用curl访问https示例分享
2014/01/17 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
JavaScript 基础问答三
2008/12/03 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中使用ElementTree解析XML示例
2015/06/02 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
Python tkinter和exe打包的方法
2020/02/05 Python
Python对象的属性访问过程详解
2020/03/05 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
团代会主持词
2014/04/02 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
Python代码风格与编程习惯重要吗?
2021/06/03 Python
Apache自带的ab压力测试工具的实现
2022/07/23 Servers
Redis主从复制操作和配置详情
2022/09/23 Redis