白驹过隙,这篇文章距今已有一年以上的历史。技术发展日新月异,文中的观点或代码很可能过时或失效,请自行甄别:)

undefined类型

在使用var申明变量但未对其加以初始化是,这个变量的值就是undefined.

如:

var temp;
alert(temp==true);//true

ps:当我们对一个变量没有申明就直接使用时,其值也为undefined,如

alert(typeof abc);//abc is not defined and the alert value is 'undefined';

null类型

从逻辑角度上来讲,null值表示一个空指针对象,而这也正是使用typeof操作符检测null值时会返回"object"的原因,如下所示:

var car=null;
alert(typeof var);//'object'

因此一般我们定义的变量将来是用来保存对象的时候name最好将该变量初始化为null,这样检查null值就可以知道该变量是否已经保存了一个对象的引用,如

if(abc!=null){
    do some operation
}

从内在讲,undefined值派生于null值,因此ECMA-262规定他们的相等性测试返回true,如:

var abc;
var cde=null
alert(abc==cde);//true

Tips:无论在什么情况下都没有必要吧一个一个变量的值显性地生成undefined,但是null却不同.当我们准备申明一个准备保存对象的变量时,应该明确地让该变量赋值为null.这样不仅可以体现null作为空对象指针的惯例,而且有助于进一步区分null和undefined值.