null类型是第二个只有一个值的类型,这个的特殊值是null,从逻辑角度看,null值表示一个空对象指针,而这也正是typeof 检测null值时会返回object的原因
var car = null;
alert(typeof car);//弹出object
如果定义的变量将来用于保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要检查null值就可以知道相应的变量是否已经保存了一个对象的引用,如下面的例子
if(car != null){
alert(2);//对car 对象进行操作
}
实际上,undefined值是派生自null值的,因此ECMAScript-262规定对他们的相等性进行测试要返回true;
alert(null == undefined);//弹出ture
这里位于null和undefined之间的相等操作符(==)总是返回true,不过注意的是这个操作符出于比较目的会转换其操作数。
尽管null和undefined有这样的关系,但是他们的 用途完全不同,如前面所说的那样,无论什么样的情况下,都没有必要把一个变量的值显示的设置为undefined,可是同样的规则对null却不适用。换句话说,只要目的是在保存对象的变量还没真正保存对象时,那么就应该明确的将变量保存成Null.这样做不仅可以体现null做为空对象指针的惯例,还可以进一步区分null和undefined.