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 相关文章推荐
JSON 编辑器实现代码
Dec 06 Javascript
JQuery页面的表格数据的增加与分页的实现
Dec 10 Javascript
jquery中获取元素里某一特定子元素的代码
Dec 02 Javascript
JQuery Mobile 弹出式登录框的实现方法
May 28 Javascript
详解jQuery中的事件
Dec 14 Javascript
JavaScript中数组常见操作技巧
Sep 01 Javascript
在vue-cli项目中使用bootstrap的方法示例
Apr 21 Javascript
Node.js应用设置安全的沙箱环境
Apr 23 Javascript
详解微信小程序与内嵌网页交互实现支付功能
Oct 22 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
Dec 25 Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 Javascript
Vuex的各个模块封装的实现
Jun 05 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
全国FM电台频率大全 - 31 新疆维吾尔族自治区
2020/03/11 无线电
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
PHP实现一个限制实例化次数的类示例
2019/09/16 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
Mootools 1.2教程 类(一)
2009/09/15 Javascript
字符串的replace方法应用浅析
2011/12/06 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
2017/04/25 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
Python中字典的基础知识归纳小结
2015/08/19 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
Python使用re模块验证危险字符
2020/05/21 Python
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
回门宴新郎答谢词
2014/01/12 职场文书
职业生涯规划书前言
2014/04/15 职场文书
小学语文课后反思精选
2014/04/25 职场文书
市级文明单位申报材料
2014/05/07 职场文书
安全施工标语
2014/06/07 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL