目前,null和undefined基本是同义的,只有一些细微的差异。javascript
null表示"没有对象",即该处不该该有值。典型用法是:java
(1) 做为函数的参数,表示该函数的参数不是对象。函数
(2) 做为对象原型链的终点。spa
Object.getPrototypeOf(Object.prototype) // null
undefined表示"缺乏值",就是此处应该有一个值,可是尚未定义。典型用法是:prototype
(1)变量被声明了,但没有赋值时,就等于undefined。code
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。对象
(3)对象没有赋值的属性,该属性的值为undefined。token
(4)函数没有返回值时,默认返回undefined。ip
(5)变量值位于后面加载时,默认返回undefined。原型链
var i; i // undefined function f(x){console.log(x)} f() // undefined var o = new Object(); o.p // undefined var x = f(); x // undefinedalert(a);var a=1;