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内核之基本概念
Oct 21 Javascript
超级简单的jquery操作表格方法
Dec 15 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
Mar 16 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
Mar 31 Javascript
js电话号码验证方法
Sep 28 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
Jan 27 Javascript
es6基础学习之解构赋值
Dec 10 Javascript
JS对象和字符串之间互换操作实例分析
Feb 02 Javascript
Nginx设置为Node.js的前端服务器方法总结
Mar 27 Javascript
原生js代码能实现call和bind吗
Jul 31 Javascript
vue实现倒计时获取验证码效果
Apr 17 Javascript
electron 如何将任意资源打包的方法步骤
Apr 16 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服务端图片生成缩略图的方法详解
2013/06/20 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
javascript multibox 全选
2009/03/22 Javascript
jquery 锁定弹出层实现代码
2010/02/23 Javascript
JavaScript全局函数使用简单说明
2011/03/11 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
vue各种事件监听实例(小结)
2020/06/24 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
django中间键重定向实例方法
2019/11/10 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
青年志愿者先进事迹
2014/05/06 职场文书
2019年大学生学年自我鉴定!
2019/03/25 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python