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 刷新页面的代码小结 推荐
Apr 02 Javascript
JavaScript二维数组实现的省市联动菜单
May 08 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
Dec 24 Javascript
Knockoutjs 学习系列(一)ko初体验
Jun 07 Javascript
利用ES6语法重构React组件详解
Mar 02 Javascript
jquery实现限制textarea输入字数的方法
Sep 06 jQuery
fetch 使用及如何接收JS传值
Nov 11 Javascript
webpack+vue2构建vue项目骨架的方法
Jan 09 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
Jan 10 Javascript
vue中使用v-model完成组件间的通信
Aug 22 Javascript
小程序表单认证布局及验证详解
Jun 19 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应用提速面面观
2006/10/09 PHP
PHP中Session的概念
2006/10/09 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
PHP开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
二叉树先序遍历的非递归算法具体实现
2014/01/09 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
JavaScript通过字符串调用函数的实现方法
2015/03/18 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
python根据日期返回星期几的方法
2015/07/06 Python
怎样使用Python脚本日志功能
2016/08/14 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
利用Python将数值型特征进行离散化操作的方法
2018/11/06 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
python3.6实现学生信息管理系统
2019/02/21 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
深入学习python多线程与GIL
2019/08/26 Python
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
员工工作表扬信范文
2014/01/13 职场文书
多媒体专业自我鉴定
2014/02/28 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
乡镇领导班子四风对照检查材料
2014/09/27 职场文书
小学音乐课歌曲《堆雪人》教学反思
2016/02/18 职场文书
详解Redis复制原理
2021/06/04 Redis
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python
python读取mat文件生成h5文件的实现
2022/07/15 Python