null 和 undefined 的区别

1、null

(1)表示“没有对象”,即此处不该有值

(2)typeof null = "object"

(3)转为数值为0

(4)作为函数的参数,表示该函数的参数不是对象;作为对象原型链的终点

Object.getPrototypeOf(Object.prototype)
// null

2、undefined

(1)表示“无”的原始值或者说表示“缺少值”,就是此处应该有一个值但是没有定义

(2)typeof undefined = "undefined"

(3)转换为数值为NaN

(4)例如变量被声明了但没有赋值,就等于undefined;函数没有返回值默认返回undefined;对象没有赋值的属性,该属性的值为undefined。

var i;
i    // undefined

function f(x) {console.log(x)}
f()    // undefined

var o = new Object();
o.p    // undefined

var x = f();
x    // undefined