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 类、命名空间、代码组织代码
Jul 31 Javascript
jquery插件制作 图片走廊 gallery
Aug 17 Javascript
js实现幻灯片效果(基于jquery插件)
Nov 05 Javascript
node.js中实现同步操作的3种实现方法
Dec 05 Javascript
jQuery中empty()方法用法实例
Jan 16 Javascript
jQuery通过Ajax返回JSON数据
Apr 28 Javascript
js实现C#的StringBuilder效果完整实例
Dec 22 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
Mar 21 Javascript
js中document.write和document.writeln的区别
Mar 11 Javascript
create-react-app构建项目慢的解决方法
Mar 14 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
Oct 01 Javascript
JavaScript canvas仿代码流瀑布
Feb 10 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下批量挂马和批量清马代码
2011/02/27 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
jQuery获取节点和子节点文本的方法
2014/07/22 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
Python中的字符串类型基本知识学习教程
2016/02/04 Python
Python request设置HTTPS代理代码解析
2018/02/12 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
Python表达式的优先级详解
2020/02/18 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
"引用"与指针的区别是什么
2016/09/07 面试题
学生个人自我鉴定范文
2014/03/28 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
重阳节活动主持词
2015/07/04 职场文书
工作简报格式范文
2015/07/21 职场文书
小学班级口号大全
2015/12/25 职场文书
调研报告的主要写法
2019/04/18 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers
试了下Golang实现try catch的方法
2021/07/01 Golang
logback 实现给变量指定默认值
2021/08/30 Java/Android
MySQL三种方式实现递归查询
2022/04/18 MySQL