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制作LED 时钟特效
Feb 01 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
Mar 01 Javascript
JavaScript各类型的关系图解
Oct 16 Javascript
javascript与jquery动态创建html元素示例
Jul 25 Javascript
浅谈JQ中mouseover和mouseenter的区别
Sep 13 Javascript
jQuery事件对象总结
Oct 17 Javascript
Javascript中字符串replace方法的第二个参数探究
Dec 05 Javascript
微信小程序 css使用技巧总结
Jan 09 Javascript
JQuery Ajax 异步操作之动态添加节点功能
May 24 jQuery
node.js中stream流中可读流和可写流的实现与使用方法实例分析
Feb 13 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
Dec 30 jQuery
Javascript实现打鼓效果
Jan 29 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安全配置详细说明
2011/09/26 PHP
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
Mootools 1.2教程 事件处理
2009/09/15 Javascript
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
Javascript 判断Flash是否加载完成的代码
2010/04/12 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
使用BootStrap实现标签切换原理解析
2017/03/14 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
Python2与Python3的区别详解
2020/02/09 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
请问软件开发中的设计模式你会使用哪些
2015/05/13 面试题
精神文明建设标语
2014/06/16 职场文书
公司合并协议书范本
2014/09/30 职场文书
高中生毕业评语
2014/12/30 职场文书
2015大学生求职信范文
2015/03/20 职场文书
党员身份证明材料
2015/06/19 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书