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 10 Javascript
JQUERY dialog的用法详细解析
Dec 19 Javascript
JavaScript中的Truthy和Falsy介绍
Jan 01 Javascript
js实现选中复选框文字变色的方法
Aug 14 Javascript
JavaScript中通过提示框跳转页面的方法
Feb 14 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
Jun 01 Javascript
ionic 上拉菜单(ActionSheet)实例代码
Jun 06 Javascript
jQuery简单实现title提示效果示例
Aug 01 Javascript
微信小程序网络请求wx.request详解及实例
May 18 Javascript
详解浏览器缓存和webpack缓存配置
Jul 06 Javascript
Vue的路由及路由钩子函数的实现
Jul 02 Javascript
js回调函数仿360开机
Dec 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
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
浅谈PHP中的
2016/04/23 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
PHP常用操作类之通信数据封装类的实现
2017/07/16 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
浅谈struts1 & jquery form 文件异步上传
2017/05/25 jQuery
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
Python读取网页内容的方法
2015/07/30 Python
python去除字符串中的换行符
2017/10/11 Python
numpy自动生成数组详解
2017/12/15 Python
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
python 生成器需注意的小问题
2020/09/29 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
公司同意接收函
2014/01/13 职场文书
住宅质量保证书
2014/04/29 职场文书
核心价值观演讲稿
2014/05/13 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
Python中threading库实现线程锁与释放锁
2021/05/17 Python
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers