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 相关文章推荐
div模拟选择框示例代码
Nov 03 Javascript
探讨js字符串数组拼接的性能问题
Oct 11 Javascript
JQuery中使文本框获得焦点的方法实例分析
Feb 28 Javascript
angularjs创建弹出框实现拖动效果
Aug 25 Javascript
原生JS实现九宫格抽奖效果
Apr 01 Javascript
基于复选框demo(分享)
Sep 27 Javascript
通过一个简单的例子学会vuex与模块化
Nov 22 Javascript
vue better scroll 无法滚动的解决方法
Jun 07 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
Jun 08 Javascript
element-ui 表格数据时间格式化的方法
Aug 24 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
Apr 02 Javascript
基于ssm框架实现layui分页效果
Jul 27 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统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
2014/05/15 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
js 页面执行时间计算代码
2009/03/04 Javascript
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
又拍云 Node.js 实现文件上传、删除功能
2018/10/28 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
Element InputNumber计数器的使用方法
2020/07/27 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
python批量替换多文件字符串问题详解
2018/04/22 Python
Python3中exp()函数用法分析
2019/02/19 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
从0到1使用python开发一个半自动答题小程序的实现
2020/05/12 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
pycharm实现猜数游戏
2020/12/07 Python
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
记帐员岗位责任制
2014/02/08 职场文书
银行简历自我评价
2014/02/11 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
初中毕业感言300字
2015/07/31 职场文书
Java中的随机数Random
2022/03/17 Java/Android