JavaScript:undefined And null区别
来源:互联网 发布:c语言课程设计 编辑:程序博客网 时间:2024/06/05 15:45
下班吃饭的时候,同事偶然问了一个问题:undefined和null到底有什么区别?无法回答,回去查阅相关资料,算了有了一个了解,做相关的总结,在开始之前,请看如下代码,算是抛出这个问题:
console.info(undefined == null); //trueconsole.info(undefined === null); //false
上述结果可以给我们一个这样的理解: undefined和null两个值相等,但是他们含义不同。具体两者有什么区别,先理解下undefined和null在做分析。
undefined
undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化,这个变量的值就是undefined。例如:
//1、声明变量,未指定值var var1;console.info(typeof varl); //undefined//2、指定值为undefinedvar var2 = undefined;console.info(typeof var2); //undefined
上面两种写法是等价的,未经初始化的值默认就会取得undefined值。
Tips:一般而言不需要显示的把一个变量设置为undefined,undefined的主要目的在于比较,ECMA第三版引入这个值正是为了区分空对象指针null和未经初始化的变量
既然谈到了null,这里在多补充一点,对为初始化的变量执行typeof返回undefined值,对为声明的变量执行typeof也会返回undefined值,如下例子:
var var3;console.info(typeof var3); //undefinedconsole.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分两个方面来理解:
内存
很显然,他们的地址分配不一样,我想着对于有后端基础的同学来说很容易理解,具体如下图:
用途
尽管undefined==null为true,但是他们的用途是不一样的。就像前面所述,无论什么情况都没有必要将一个变量值显示的指定为undefined,默认值为undefined,但是默认的规则对null却不适用。因为null表示没有指向对象的引用。
总的来说,undefined派生于null,他们是“=="的,另一层面上undefined表示没有赋值的基本数据类型,null表示没有赋值的引用数据类型,他们不能“===”。
- JavaScript:undefined And null区别
- [JavaScript] null and undefined
- javascript undefined与null区别
- javascript null和undefined区别
- JavaScript null 和 undefined区别
- JavaScript-null,undefined 的区别?
- 区别Javascript中的Null与Undefined
- JavaScript中 null和undefined区别分析
- JavaScript 中 null 和 undefined 的区别
- JavaScript中的null和undefined的区别
- JavaScript 编程思想 null undefined 的区别
- JavaScript的null和undefined区别
- JavaScript Null和Undefined的区别
- JavaScript Null和Undefined的区别
- JavaScript中undefined与null的区别
- JavaScript中null和undefined的区别
- javascript中undefined和null的区别
- JavaScript undefined与null的区别
- Codeforces Round #104 (Div. 2)---A. Lucky Ticket
- class基础用法
- USACO 2.1 Ordered Fractions
- NYOJ 10 skiing (深搜和动归)
- Android GridView的使用方法
- JavaScript:undefined And null区别
- ios:KVC的概述与使用
- ffmpeg源码分析之avformat_alloc_context
- Zend Framework 2 入门-数据分页-pagination
- Shell编程入门
- SOCKET通信中TCP、UDP数据包大小的确定
- 设置Centos 7的默认启动项
- ubuntu 入门
- 二叉树的一些简单算法(二)