null == 0; // false undefined == ""; // false null == false; // false undefined == false; // false null == undefined; // true
尽管如此,和其他相似之处,但null和undefined并不是等价的。每个作为其独特的类型的唯一成员,undefined是Undefined类型和null是Null类型。使用全等操作符(===)比较这两个值,这要求类型和值都相等,下面证明这一点:
undefined === null; // false
在JavaScript这种动态的弱类型语言中,只会默认返回一个undefined值,而不是上升为一个错误。
任何声明变量时没有提供一个初始值,都会有一个为undefined的默认值:
var foo; // 默认值为 undefined
当试图访问一个不存在的对象属性或数组项时,返回一个undefined值:
var array = [1, 2, 3]; var foo = array.foo; // foo 属性不存在, 返回 undefined var item = array[5]; // 数组中没有索引为5的项,返回 undefined
如果省略了函数的返回语句,返回undefined:
var value = (function(){})(); // 返回 undefined
函数调用时未提供的值结果将为undefined参数值:
(function(undefined){ // 参数是 undefined })();