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学习随笔(使用window和frame)的技巧
Mar 08 Javascript
用js实现的仿sohu博客更换页面风格(简单版)
Mar 22 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
Apr 07 Javascript
JavaScript验证电子邮箱的函数
Aug 22 Javascript
js实现索引图片切换效果
Nov 21 Javascript
在javascript中创建对象的各种模式解析
May 16 Javascript
浅析jQuery中使用$所引发的问题
May 29 Javascript
jQuery之简单的表单验证实例
Jul 07 Javascript
js模拟微博发布消息
Feb 23 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
Sep 11 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
Oct 24 Javascript
ES6 Symbol数据类型的应用实例分析
Jun 26 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
通过html表格发电子邮件
2006/10/09 PHP
COM in PHP (winows only)
2006/10/09 PHP
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
node.js超时timeout详解
2014/11/26 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
在Vue中使用HOC模式的实现
2020/08/23 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
python组合无重复三位数的实例
2018/11/13 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
python字典的常用方法总结
2019/07/31 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
租房协议书范例
2014/10/14 职场文书
项目备案申请报告
2015/05/15 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
导游词之河北野三坡
2019/12/11 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang
解决 redis 无法远程连接
2022/05/15 Redis