Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测nul1值时会返回"object"的原因,如下面的例子所示:

03-10NullExample01.htm

var car = null;
console.log(typeof car); // "object"

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为Null而不是其他值。这样一来,只要直接检查nul1值就可以知道相应的变量是否已经保存了一个对象的引用,如下面的例子所示:

if (car != null){
// 对car对象执行某些操化
}

实际上, undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true
03-10NullExample02.htm

console.log(null == undefined); // "true"

这里,位于​​null​​​和​​undefined​​之间的相等操作符( == )总是返回true。

尽管​​null​​​和​​undefined​​​有这样的关系,但它们的用途完全不同。如前所述,无论在什么情况下都没有必要把一个变量的值显式地设置为​​undefined​​​,可是同样的规则对null却不适用。换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存Null值。这样做不仅可以体现Null作为空对象指针的惯例,而且也有助于进一步区分​​null​​​和​​undefined​​。