字面的含义
声明变量未定义:undefined;(例:var a;)
有定义,但内容为空的对象:null。
从字面上来理解undefined和null其实相对比较简单:
undefined表示的是声明一个变量之后我们并没有给它定义内容。
null表示的是有定义,定义的是一个空对象。
最初的区分方式
null是一个表示"无"的对象,转为数值时为0;
undefined是一个表示"无"的原始值,转为数值时为NaN。
目前的用法
null表示"没有对象",即该处不应该有值。
null出现在哪里?
对于函数的参数,为了表示该函数的参数不是对象,会使用null。这种用法在传参时经常遇到此类应用。
对象原型链的终点是null。
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。
undefined会出现在哪里?
1、变量被声明了,但没有赋值,默认为undefined
2、调用函数时,应该提供的参数没有提供,该参数默认为undefined
3、对象没有赋值的属性,该属性的值默认为undefined
4、函数没有返回值时,默认返回undefined