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 单击li防止重复加载的实现代码
Dec 24 Javascript
Node.js如何自动审核团队的代码
Jul 20 Javascript
gulp-uglify 与gulp.watch()配合使用时报错(重复压缩问题)
Aug 24 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
Dec 27 Javascript
Vuex模块化实现待办事项的状态管理
Mar 15 Javascript
React学习笔记之列表渲染示例详解
Aug 22 Javascript
JS和jQuery通过this获取html标签中的属性值(实例代码)
Sep 11 jQuery
微信小程序实现bindtap等事件传参
Apr 08 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
Jun 18 jQuery
VUE的history模式下除了index外其他路由404报错解决办法
Aug 21 Javascript
JavaScript鼠标悬停事件用法解析
May 15 Javascript
在vue项目中 实现定义全局变量 全局函数操作
Oct 26 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
配置支持SSI
2006/11/25 PHP
php数据库抽象层 PDO
2011/05/07 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
php获取随机数组列表的方法
2014/11/13 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
Laravel 5.5 异常处理 & 错误日志的解决
2019/10/17 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
JS获取节点的兄弟,父级,子级元素的方法
2014/01/09 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
Python用threading实现多线程详解
2017/02/03 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
Python3 适合初学者学习的银行账户登录系统实例
2017/08/08 Python
python保存网页图片到本地的方法
2018/07/24 Python
详解python 注释、变量、类型
2018/08/10 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
五一家具促销方案
2014/01/10 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
模范教师材料大全
2014/12/16 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技