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脚本代码跑起来。
Jan 09 Javascript
基于jquery的Repeater实现代码
Jul 17 Javascript
基于jQuery的Tab选项框效果代码(插件)
Mar 01 Javascript
jquery中获取select选中值的代码
Jun 27 Javascript
jquery插件开发方法(初学者)
Feb 03 Javascript
控制台报错object is not a function的解决方法
Aug 24 Javascript
JavaScript函数详解
Feb 27 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
Aug 01 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
Aug 23 Javascript
jQuery实现弹窗居中效果类似alert()
Feb 27 Javascript
基于JavaScript实现的希尔排序算法分析
Apr 14 Javascript
Angular将填入表单的数据渲染到表格的方法
Sep 22 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
Wordpress ThickBox 点击图片显示下一张图的修改方法
2010/12/11 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
javascript删除option选项的多种方法总结
2013/11/22 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
webpack实现热更新(实施同步刷新)
2017/07/28 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
化工专业应届生求职信
2013/11/08 职场文书
日语专业推荐信
2013/11/12 职场文书
上课打牌的检讨书
2014/02/15 职场文书
工业设计专业自荐书
2014/06/05 职场文书
运动会标语
2014/06/21 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
导师对论文的学术评语
2015/01/04 职场文书
springboot中一些比较常用的注解总结
2021/06/11 Java/Android
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
MySQL分布式恢复进阶
2022/07/23 MySQL