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 相关文章推荐
一段非常简单的让图片自动切换js代码
Nov 10 Javascript
关于JS字符串函数String.replace()
Apr 07 Javascript
JS 删除字符串最后一个字符的实现代码
Feb 20 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
Nov 09 Javascript
node实现登录图片验证码的示例代码
Apr 20 Javascript
Angular如何在应用初始化时运行代码详解
Jun 11 Javascript
JS实现图片转换成base64的各种应用场景实例分析
Jun 22 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
Feb 13 Javascript
Layui给switch添加响应事件的例子
Sep 03 Javascript
解决layui表格内文本超出隐藏的问题
Sep 12 Javascript
js瀑布流布局的实现
Jun 28 Javascript
JavaScript 生成唯一ID的几种方式
Feb 19 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利用str_replace防注入的方法
2013/11/10 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
jQuery 常见学习网站与参考书
2009/11/09 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
Bootstrap实现带动画过渡的弹出框
2016/08/09 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
javascript常用的设计模式
2017/02/09 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
python对execl 处理操作代码
2020/06/22 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
拓展训练激励口号
2014/06/17 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫