Undefined类型与Null类型

来源:互联网 发布:禁止别人安装软件 编辑:程序博客网 时间:2024/06/05 00:14

一、Undefined类型

Undefined 类型只有一个值,即特殊的undefined。在使用var 声明变量,但没有对其初始化时,这个变量的值就是undefined。

var box;
alert(box);
PS:我们没有必要显式的给一个变量赋值为undefined,因为没有赋值的变量会隐式的(自动的)赋值为undefined;而undefined 主要的目的是为了用于比较,ECMAScript 第3 版之前并没有引入这个值,引入之后为了正式区分空对象与未经初始化的变量。未初始化的变量与根本不存在的变量(未声明的变量)也是不一样的。
var box;
alert(age); //age is not defined
PS:如果typeof box,typeof age 都返回的undefined。从逻辑上思考,他们的值,一个是undefined,一个报错;他们的类型,却都是undefined。所以,我们在定义变量的时候,尽可能的不要只声明,不赋值。


二、Null类型

Null 类型是一个只有一个值的数据类型,即特殊的值null。它表示一个空对象引用(指针),而typeof 操作符检测null 会返回object。

var box = null;

alert(typeof box);

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null。这样,当检查null 值就知道是否已经变量是否已经分配了对象引用了。

var box = null;

if (box != null) {

alert('box 对象已存在!');

}

有个要说明的是:undefined 是派生自null 的,因此ECMA-262 规定对它们的相等性测试返回true。

alert(undefined == null);

由于undefined 和null 两个值的比较是相等的,所以,未初始化的变量和赋值为null 的变量会相等。这时,可以采用typeof 变量的类型进行比较。但,建议还是养成编码的规范,不要忘记初始化变量。

var box;

var car = null;

alert(typeof box == typeof car)

0 0
原创粉丝点击