JavaScript undefined及null区别实例解析


Posted in Javascript onJuly 21, 2020

在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别。

var a = undefined;

var a = null;

上面代码中,a变量分别被赋值为undefined和null,这两种写法几乎等价。

undefined和null在if语句中,都会被自动转为false,相等运算符甚至直接报告两者相等。

if (!undefined)
console.log('undefined is false');
// undefined is false

if (!null)
console.log('null is false');
// null is false

undefined == null
// true

上面代码说明,两者的行为是何等相似!

既然undefined和null的含义与用法都差不多,为什么要同时设置两个这样的值,这不是无端增加JavaScript的复杂度,令初学者困扰吗?Google公司开发的JavaScript语言的替代品Dart语言,就明确规定只有null,没有undefined!

Undefined

Undefined 类型只有一个值,即 undefined。

声明了变量,但未进行初始化时,这个变量的值就是 undefined,例如:

var message;
alert(message == undefined); // true

字面量 undefined 的主要目的是用于比较,而ECMAScript 3.0之前的版本中并没有规定这个值。引入这个值是为了正式区分空对象指针 与 未经初始化的变量。

Null

Null 类型是第二个只有一个值的类型,即 null。
从逻辑角度来看,null 表示一个空对象指针,因此,当使用 typeof 操作符检测 null 值时,会返回“object”,如下所示:

var car = null;
alert(typeof car); // "object"

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null,而不是其他值,这样一来只要直接检查null值就可以知道该变量是否保存了一个对象的引用,例如:

if (car != null) {
dosomthing
}

实际上, undefined值是派生自 null值的,因为他们在执行相等性测试(==)时要返回 true

alert(null == undefined) // true

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 自适应高度的Tab选项卡
Apr 05 Javascript
用JavaScript修改CSS属性的代码
May 06 Javascript
原生javascript图片自动或手动切换示例附演示源码
Sep 04 Javascript
jQuery 选择器详解
Jan 19 Javascript
Javascript闭包与函数柯里化浅析
Jun 22 Javascript
使用开源工具制作网页验证码的方法
Oct 17 Javascript
AngularJS的ng-click传参的方法
Jun 19 Javascript
详解redux异步操作实践
Aug 15 Javascript
Vue发布项目实例讲解
Jul 17 Javascript
解决layui数据表格table的横向滚动条显示问题
Sep 04 Javascript
微信小程序静默登录的实现代码
Jan 08 Javascript
React列表栏及购物车组件使用详解
Jun 28 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
Jul 21 #Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
Jul 21 #Javascript
vue 实现tab切换保持数据状态
Jul 21 #Javascript
vue通过过滤器实现数据格式化
Jul 20 #Javascript
原生JavaScript写出Tabs标签页的实例代码
Jul 20 #Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
Jul 20 #Javascript
简单了解前端渐进式框架VUE
Jul 20 #Javascript
You might like
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
详解JavaScript时间格式化
2015/12/23 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
matplotlib绘制符合论文要求的图片实例(必看篇)
2017/06/02 Python
实例讲解python中的序列化知识点
2018/10/08 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
Python新手学习函数默认参数设置
2020/06/03 Python
python 实现简易的记事本
2020/11/30 Python
毕业生求职简历中的自我评价
2013/10/18 职场文书
实习协议书范本
2014/04/22 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
2015年路政工作总结
2015/05/22 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
合同补充协议书
2016/03/24 职场文书
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS
golang操作rocketmq的示例代码
2022/04/06 Golang
python数据处理之Pandas类型转换
2022/04/28 Python