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 相关文章推荐
HTML中的setCapture和releaseCapture使用介绍
Mar 21 Javascript
JS定时关闭窗口的实例
May 22 Javascript
使用Promise解决多层异步调用的简单学习心得
May 17 Javascript
canvas绘制的直线动画
Jan 23 Javascript
js禁止浏览器页面后退功能的实例(推荐)
Sep 01 Javascript
分享vue.js devtools遇到一系列问题
Oct 24 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
Feb 21 Javascript
vue axios 表单提交上传图片的实例
Mar 16 Javascript
深入浅析angular和vue还有jquery的区别
Aug 13 jQuery
vue中keep-alive组件的入门使用教程
Jun 06 Javascript
手把手教您实现react异步加载高阶组件
Apr 07 Javascript
JavaScript原型链中函数和对象的理解
Jun 16 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去除换行(回车换行)的三种方法
2014/03/26 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
PHP设计模式之单例模式定义与用法分析
2019/03/26 PHP
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
jquery处理json对象
2014/11/03 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
npm scripts 使用指南详解
2018/10/08 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
用Python进行TCP网络编程的教程
2015/04/29 Python
Django发送html邮件的方法
2015/05/26 Python
python 转换 Javascript %u 字符串为python unicode的代码
2016/09/06 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
django和flask哪个值得研究学习
2020/07/31 Python
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
高中毕业自我鉴定
2013/12/19 职场文书
优秀公益广告词大全
2014/03/19 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
幼儿园感恩节活动方案
2014/10/06 职场文书
安全生产月标语
2014/10/07 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫