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 相关文章推荐
线路分流自动跳转代码;希望对大家有用!
Dec 02 Javascript
用js传递value默认值的示例代码
Sep 11 Javascript
js光标定位文本框回车表单提交问题的解决方法
May 11 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
Dec 04 Javascript
JS跨域解决方案之使用CORS实现跨域
Apr 14 Javascript
Node.js中文件操作模块File System的详细介绍
Jan 05 Javascript
Bootstrap实现翻页效果
Nov 27 Javascript
解决npm管理员身份install时出现权限的问题
Mar 16 Javascript
解决layui 复选框等内置控件不显示的问题
Aug 14 Javascript
JS原生带缩略图的图片切换效果
Oct 10 Javascript
Vue中this.$nextTick的作用及用法
Feb 04 Javascript
详解vue3中组件的非兼容变更
Mar 03 Vue.js
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
优化PHP代码的53条建议
2008/03/27 PHP
paypal即时到账php实现代码
2010/11/28 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
Jquery选择子控件"大于号"和" "区别介绍及使用示例
2013/06/25 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
JavaScript仿商城实现图片广告轮播实例代码
2016/02/06 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
Bootstrap CSS布局之列表
2016/12/15 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
2017/01/05 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
动感网页相册 python编写简单文件夹内图片浏览工具
2016/08/17 Python
python数据结构之链表的实例讲解
2017/07/25 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
python清空命令行方式
2020/01/13 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
《山谷中的谜底》教学反思
2014/04/26 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
小学数学教学随笔
2015/08/14 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
vue3获取当前路由地址
2022/02/18 Vue.js
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL