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 22 Javascript
图片上传插件jquery.uploadify详解
Nov 15 Javascript
Javascript和Java获取各种form表单信息的简单实例
Feb 14 Javascript
js实现键盘Enter键提交表单的方法
May 27 Javascript
如何动态加载外部Javascript文件
Dec 02 Javascript
微信小程序 加载 app-service.js 错误解决方法
Oct 12 Javascript
微信小程序 Nginx环境配置详细介绍
Feb 14 Javascript
vue axios数据请求get、post方法及实例详解
Sep 11 Javascript
jQuery实现点击图标div循环放大缩小功能
Sep 30 jQuery
小程序实现人脸识别功能(百度ai)
Dec 23 Javascript
JavaScript工具库之Lodash详解
Jun 15 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
Jul 10 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
Mysql和网页显示乱码解决方法集锦
2008/03/27 PHP
php下使用SimpleXML 处理XML 文件
2010/02/27 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
php操作mongodb封装类与用法实例
2018/09/01 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
用javascript获取textarea中的光标位置
2008/05/06 Javascript
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
JS 事件绑定函数代码
2010/04/28 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
2015/08/10 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
vue实现微信获取用户信息的方法
2019/03/21 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
vue实现分页加载效果
2019/12/24 Javascript
微信小程序开发搜索功能实现(前端+后端+数据库)
2020/03/04 Javascript
python中pygame模块用法实例
2014/10/09 Python
python根据出生年份简单计算生肖的方法
2015/03/27 Python
总结Python中逻辑运算符的使用
2015/05/13 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
python3中str(字符串)的使用教程
2017/03/23 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
pycham查看程序执行的时间方法
2018/11/29 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
python Scrapy爬虫框架的使用
2021/01/21 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
大学生简单自荐信
2013/11/10 职场文书
三好学生个人先进事迹材料
2014/05/17 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL