JavaScript语言有两个表示"无"的值:undefined和null。
var a = undefined; var a = null;
a变量分别被赋值为undefined和null,赋值写法类似;而且在用if语句做判断时都会返回false;甚至undefined==null也会返回true。
然而两者还是有区别的:
undefined是一个undefined类型,而null是一个object类型。
null表示"没有对象",即该处不应该有值。典型用法是:
-
作为函数的参数,表示该函数的参数不是对象。
-
作为对象原型链的终点。
Object.getPrototypeOf(Object.prototype) // null
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
-
变量被声明了,但没有赋值时,就等于undefined。
var i; i; // undefined
-
调用函数时,应该提供的参数没有提供,该参数等于undefined。
function f(x){ console.log(x); } f(); // undefined
-
对象没有赋值的属性,该属性的值为undefined。
var o = new Object(); o.p; // undefined
-
函数没有返回值时,默认返回undefined。 var x = f();
x; // undefined