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 相关文章推荐
js简单实现HTML标签Select联动带跳转
Oct 23 Javascript
jQuery中die()方法用法实例
Jan 19 Javascript
js给网页加上背景音乐及选择音效的方法
Mar 03 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
Dec 13 Javascript
bootstrap输入框组代码分享
Jun 07 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
Jul 06 Javascript
用AngularJS的指令实现tabs切换效果
Aug 31 Javascript
微信小程序 MINA文件结构
Oct 17 Javascript
bootstrap中模态框、模态框的属性实例详解
Feb 17 Javascript
vue.js从安装到搭建过程详解
Mar 17 Javascript
vuex中store存储store.commit和store.dispatch的用法
Jul 24 Javascript
vue+canvas实现拼图小游戏
Sep 18 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
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
javascript OFFICE控件测试代码
2009/12/08 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
使用Python获取Linux系统的各种信息
2014/07/10 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
库房主管岗位职责
2013/12/31 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
机关搬迁方案
2014/05/18 职场文书
植物生产学专业求职信
2014/08/08 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
护士年终个人总结
2015/02/13 职场文书
2015年医院药剂科工作总结
2015/05/04 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL
angular4实现带搜索的下拉框
2022/03/25 Javascript