null 表示没有对象,也就是说此处不该有值,用法是

1)作为函数的参数,表示他不是对象

2)作为对象原型链的终点(函数的原型对象constructor默认指向函数本身,原型对象除了有原型属性外,为了实现继承,还有一个原型链指针proto,该指针指向上一层的原型对象,而上一层的原型对象的结构依然类似,这样利用proto一直指向Object的原型对象上,而Object的原型对象用Object.proto = null表示原型链的最顶端,如此变形成了javascript的原型链继承,同时也解释了为什么所有的javascript对象都具有Object的基本方法。)

undefined表示缺少值,就是此处应该有个值,但是没有定义,用法:

1)变量被声明,但是没有赋值

2)调用函数,没有提供应该提供的参数

3)对象没有赋值的属性,此属性为undefined

4)函数没有返回值,默认返回undefined