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 相关文章推荐
jQuery 解析xml文件
Aug 09 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
Feb 14 Javascript
ExtJS4 表格的嵌套 rowExpander应用
May 02 Javascript
JQuery操作元素的css样式
Mar 09 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
Aug 31 Javascript
js+html5实现的自由落体运动效果代码
Jan 28 Javascript
全面理解JavaScript中的继承(必看)
Jun 16 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
深入理解 webpack 文件打包机制(小结)
Jan 08 Javascript
Vue js 的生命周期(看了就懂)(推荐)
Mar 29 Javascript
vue实现匀速轮播效果
Jun 29 Javascript
javascript利用canvas实现鼠标拖拽功能
Jul 23 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
Smarty+QUICKFORM小小演示
2007/02/25 PHP
PHP 超链接 抓取实现代码
2009/06/29 PHP
细谈php中SQL注入攻击与XSS攻击
2012/06/10 PHP
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
Thinkphp 中 distinct 的用法解析
2016/12/14 PHP
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
JavaScript学习笔记整理_关于表达式和语句
2016/09/19 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
用python读写excel的方法
2014/11/18 Python
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
印度领先的眼镜电子商务网站:Lenskart
2019/12/16 全球购物
C语言笔试题
2014/09/04 面试题
大学毕业登记表自我鉴定
2013/10/09 职场文书
电子商务应届生自我鉴定
2014/01/13 职场文书
高中生职业生涯规划书
2014/02/24 职场文书
体育课课后反思
2014/04/24 职场文书
植树节标语
2014/06/27 职场文书
雷峰塔导游词
2015/02/09 职场文书
卡特教练观后感
2015/06/08 职场文书
建筑工程催款函
2015/06/24 职场文书
《黄山奇石》教学反思
2016/02/18 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技