JavaScript:undefined And null差异
班吃饭的时候,同事偶然问了一个问题:undefined和null究竟有什么差别?无法回答,回去查阅相关文档,算了有了一个了解,做相关的总结。在開始之前,请看例如以下代码,算是抛出这个问题:
console.info(undefined == null); //true
console.info(undefined === null); //false
上述结果能够给我们一个这种理解: undefined和null两个值相等,可是他们含义不同。详细两者有什么差别,先理解下undefined和null在做分析。
undefined
undefined类型仅仅有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化,这个变量的值就是undefined。
比如:
//1、声明变量,未指定值
var var1;
console.info(typeof varl); //undefined
//2、指定值为undefined
var var2 = undefined;
console.info(typeof var2); //undefined
上面两种写法是等价的,未经初始化的值默认就会取得undefined值。
Tips:一般而言不须要显示的把一个变量设置为undefined,undefined的主要目的在于比較,ECMA第三版引入这个值正是为了区分空对象指针null和未经初始化的变量
既然谈到了null,这里在多补充一点,对为初始化的变量运行typeof返回undefined值,对为声明的变量运行typeof也会返回undefined值,例如以下样例:
var var3;
console.info(typeof var3); //undefined
console.info(typeof var4); //undefined
这个结果有逻辑上的合理性,尽管null和undefined在技术角度上有本质差别,可是实际中不可能对两种变量进行操作。在这样的情况下假设我们习惯声明变量就进行初始化的时候,当typeof操作符返回“undefined”值时,我们就知道有变量尚未被声明,而不是尚未初始化。
null
null类型也是仅仅有一个值null,从逻辑角度来看,null值表示一个空对象指针,不信?看例如以下代码就知道了:
var var5 = null;
console.info(typeof var5); //object
所以在变量是用于保存对象时,最后将之初始化为null。能够非常方便的知道变量是否保存了一个对象的引用。
差别
分别的了解了这两种类型,到这里似乎有所理解,但又不详细。回到最初抛出的问题,在ECMAScript的原始类型中。是有undefined和null类型的,这两种类型分别相应了属于自己的唯一值undefined和null。undefined实际上是从null派生而来,这就能够解释undefined==null为true了。
就undefined===null为false分两个方面来理解:
内存
非常显然,他们的地址分配不一样,我想着对于有后端基础的同学来说非常easy理解,详细例如以下图:

用途
虽然undefined==null为true,可是他们的用途是不一样的。就像前面所述,不管什么情况都没有必要将一个变量值显示的指定为undefined,默认值为undefined。可是默认的规则对null却不适用。由于null表示没有指向对象的引用。
总的来说。undefined派生于null。他们是“=="的。还有一层面上undefined表示没有赋值的基本数据类型,null表示没有赋值的引用数据种类,他们不可以“===”。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
JavaScript:undefined And null差异的更多相关文章
- Javascript undefined 和 null
Javascript undefined 和 null 虽然 Javascript 一切皆对象,但是类型还是有区别的. undefined 表示 未定义的数据类型. null 表示空对象. 在判断时没 ...
- Javascript中的null和 undefined
Javascript Undefined vs NULL Many a times we often get confused on whats the difference between UNDE ...
- Javascript中的undefined、null、""、0值和false的区别总结
在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库字段的空值DBN ...
- JavaScript中undefined与null的区别
通常情况下, 当我们试图访问某个不存在的或者没有赋值的变量时,就会得到一个undefined值.Javascript会自动将声明是没有进行初始化的变量设为undifined. 如果一个变量根本不存在会 ...
- JavaScript数据类型 typeof, null, 和 undefined
JavaScript 数据类型 在 JavaScript 中有 5 种不同的数据类型: string number boolean object function 3 种对象类型: Object Da ...
- javascript类型系统——undefined和null
× 目录 [1]原因 [2]undefined [3]null 前面的话 一般的程序语言,表示空的只有null,但javascript的设计者Brendan Eich却设计了一个undefined,这 ...
- 【温故而知新-Javascript】比较 undefined 和 null 值
JavaScript 中有两个特数值: undefined和null,在比较它们的时候需要留心.在读取未赋值的变量或试图读取对象没有的属性时得到的就是 undefined 值. <!DOCTYP ...
- 区别Javascript中的Null与Undefined
在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undef ...
- 【转】JavaScript中undefined与null的区别
通常情况下, 当我们试图访问某个不存在的或者没有赋值的变量时,就会得到一个undefined值.Javascript会自动将声明是没有进行初始化的变量设为undifined. 如果一个变量根本不存在会 ...
随机推荐
- 一次修复IncrediBuild Coordinator服务的经历
作者:朱金灿 来源:http://blog.csdn.net/clever101 早上发现部门的分布式编译服务的服务端崩溃了,原来是IncrediBuild Coordinator服务启动不了.启动该 ...
- 关于stm32的RAM大小
- Lucene学习总结之三:Lucene的索引文件格式(1) 2014-06-25 14:15 1124人阅读 评论(0) 收藏
Lucene的索引里面存了些什么,如何存放的,也即Lucene的索引文件格式,是读懂Lucene源代码的一把钥匙. 当我们真正进入到Lucene源代码之中的时候,我们会发现: Lucene的索引过程, ...
- Loader之二:CursorLoader基本实例 分类: H1_ANDROID 2013-11-16 10:50 5447人阅读 评论(0) 收藏
参考APIDEMO:sdk\samples\android-19\content\LoaderCursor 1.创建主布局文件,里面只包含一个Fragment. <FrameLayout xml ...
- 应用 Valgrind 发现 Linux 程序的内存问题及交叉编译for arm
Valgrind 概述 体系结构 Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合.Valgrind由内核(core)以及基于内核的其他调试工具组成.内核类似于一个框 ...
- valgrind,arm-linux交叉编译
1. 下载及解压valgrind-3.9.0 2.CC=/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux ...
- ebook https://salttiger.com/category/notification/
https://salttiger.com/category/notification/ 因为个人精力有限,持续搜集.整理.分享电子书已经占用我大部分业余时间,今后不再给评论区留言的朋友们找书,还希望 ...
- 【42.07%】【codeforces 558A】Lala Land and Apple Trees
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- css3 实现水晶按钮
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee432e), color-sto ...
- 【b602】金明的预算方案
Time Limit: 1 second Memory Limit: 50 MB [问题描述] 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈 ...