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将一个表单序列化为一个对象的方法
Dec 02 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
Oct 17 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
Aug 22 Javascript
jQuery实现获取绑定自定义事件元素的方法
Dec 02 Javascript
jquery attr()设置和获取属性值实例教程
Sep 25 Javascript
jQuery实现给input绑定回车事件的方法
Feb 09 Javascript
Node.js读取文件内容示例
Mar 07 Javascript
js实现本地图片文件拖拽效果
Jul 18 Javascript
JS实现十字坐标跟随鼠标效果
Dec 25 Javascript
Vue组件通信的四种方式汇总
Feb 08 Javascript
还不懂递归?读完这篇文章保证你会懂
Jul 29 Javascript
vue实现给div绑定keyup的enter事件
Jul 31 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
PHP5 安装方法
2007/01/15 PHP
escape unescape的php下的实现方法
2007/04/27 PHP
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
2011/12/28 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
简单实现php上传文件功能
2017/09/21 PHP
PHP常用字符串函数用法实例总结
2020/06/04 PHP
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
jquery设置css样式的多种方法(总结)
2017/02/21 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
使用Bootstrap和Vue实现用户信息的编辑删除功能
2017/10/25 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
Python抓取框架 Scrapy的架构
2016/08/12 Python
Python中取整的几种方法小结
2017/01/06 Python
解决python "No module named pip" 的问题
2018/10/13 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
python实现拼图小游戏
2020/02/22 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
英国香水店:The Perfume Shop
2017/03/27 全球购物
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
2014应届本科生自我评价
2014/09/13 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
工伤私了协议书范本
2014/11/24 职场文书
初中作文评语集锦
2014/12/25 职场文书
七一活动主持词
2015/06/29 职场文书
会计工作自我鉴定范文
2019/06/21 职场文书
数据库之SQL技巧整理案例
2021/07/07 SQL Server