一、前言
在项目中发现了一个现象:在对变量初始化时,我习惯用空字符串(‘’)、空对象({}),空数组([])、0等来初始化,却发现其他同事惯用undefined,而在bizcharts图表中,null又可以使得某个数据不显示……好吧,直到现在还是没弄懂到底有啥区别,哪种更好,只能是根据不同的需求特殊处理了,比如:折线图某个横坐标没有数据,如果需求是不显示对应的点,则处理为null,否则可以处理为0,其他情况就看各人习惯了。
当前,说了一大堆废话,但此次只比较null和undefined的不同。
二、null和undefined
1、null:
①、作为函数的参数,表示该函数的参数不是对象。在开发时,如果需要传递参数,且参数是对象,但是我们暂时不想传递或者不需要传递,可以传null ;
②、作为对象原型链的终点。比如:“字符串”—>String—>Object—>null(一级一级往上)。如果定义的变量是用来保存对象的,那么最好将该变量初始化为null;
扩展:
Number(null) 值为0 ==》3+null=3;
2、undefined
①、变量被声明了,但没有赋值时,就等于undefined;
②、调用函数时,应该提供的参数没有提供,该参数等于undefined
③、对象没有赋值的属性,该属性的值为undefined
④、函数没有返回值时,默认返回undefined
扩展:
Number(undefined)值为NaN==》3+undefined=NaN
三、参考:
http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html