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高级程序设计 读书笔记之十 本地对象Date日期
Feb 27 Javascript
如何使用Jquery获取Form表单中被选中的radio值
Aug 09 Javascript
一个很有趣3D球状标签云兼容IE8
Aug 22 Javascript
分享10个原生JavaScript技巧
Apr 20 Javascript
jQuery手指滑动轮播效果
Dec 22 Javascript
React Native中的RefreshContorl下拉刷新使用
Oct 09 Javascript
JQuery实现table中tr上移下移的示例(超简单)
Jan 08 jQuery
js中的reduce()函数讲解
Jan 18 Javascript
js图片查看器插件用法示例
Jun 22 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
Nov 01 Javascript
JS实现字体背景跑马灯
Jan 06 Javascript
javascript实现计算器功能详解流程
Nov 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扩展ZF――Validate扩展
2008/01/10 PHP
C# Assembly类访问程序集信息
2009/06/13 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
教大家制作简单的php日历
2015/11/17 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
JQuery与Ajax调用新浪API获取短网址的代码
2014/02/07 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
layui分页效果实现代码
2017/05/19 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
jQuery实现的页面详情展开收起功能示例
2018/06/11 jQuery
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python实现统计单词出现的个数
2015/05/28 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
房地产营销活动策划方案
2014/09/15 职场文书
关于分班的感言
2015/08/04 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server