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 相关文章推荐
javascript实现划词标记+划词搜索功能
Mar 06 Javascript
基于jquery的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)
Sep 28 Javascript
ajax请求get与post的区别总结
Nov 04 Javascript
JavaScript中setInterval的用法总结
Nov 20 Javascript
json的定义、标准格式及json字符串检验
May 11 Javascript
JavaScript数组对象赋值用法实例
Aug 04 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
Nov 29 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
Dec 01 Javascript
Avalonjs 实现简单购物车功能(实例代码)
Feb 07 Javascript
js实现五星评价功能
Mar 08 Javascript
webpack 从指定入口文件中提取公共文件的方法
Nov 13 Javascript
用webpack4开发小程序的实现方法
Jun 04 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获取当前url的具体方法全面解析
2013/11/26 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
javascript显示选择目录对话框的代码
2008/11/10 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
Python实现完整的事务操作示例
2017/06/20 Python
python实现冒泡排序算法的两种方法
2018/03/10 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
执行Python程序时模块报错问题
2020/03/26 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
Python如何给你的程序做性能测试
2020/07/29 Python
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
护士自我鉴定怎么写
2014/02/07 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
旷课检讨书500字
2014/10/14 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
css3新特性的应用示例分析
2022/03/16 HTML / CSS
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL