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阻止浏览器后退事件防止误操作清空表单
Nov 22 Javascript
Angularjs 基础入门
Dec 26 Javascript
jQuery中:file选择器用法实例
Jan 04 Javascript
JS判断是否360安全浏览器极速内核的方法
Jan 29 Javascript
JavaScript图像延迟加载库Echo.js
Apr 05 Javascript
详解jquery validate实现表单验证 (正则表达式)
Jan 18 Javascript
AngularJS 打开新的标签页实现代码
Sep 07 Javascript
express + jwt + postMan验证实现持久化登录
Jun 05 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
Oct 30 Javascript
vue-resource post数据时碰到Django csrf问题的解决
Mar 13 Javascript
基于原生js实现判断元素是否有指定class名
Jul 11 Javascript
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
php统计文章排行示例
2014/03/04 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
2015/12/09 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
JS 拦截全局ajax请求实例解析
2016/11/29 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
2017/03/27 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
聊聊python中的异常嵌套
2020/09/01 Python
五分钟学会怎么用python做一个简单的贪吃蛇
2021/01/12 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
平面设计师工作职责范文
2013/12/03 职场文书
送货司机岗位职责
2013/12/11 职场文书
给民警的表扬信
2014/01/08 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
小学英语教学反思范文
2016/02/15 职场文书
初中数学教学反思范文
2016/02/17 职场文书