undefined和void 0 的区别:
undefined 类型表示未定义,它的类型只有一个值就是undefined。
void 运算符能对给定的表达式进行求值,并返回undefined。void后面跟任意表达式返回的都是undefined,例如void(1)、void(‘test’),写void 0 是因为 void 0 是表达式中最短的一个。
为什么要用void 0 来代替undefined:
任何变量在赋值之前都是undefined类型,但是在JavaScript中 undefined是一个变量,而并不是一个关键字,变量是可以重写的,所以我们为了避免无意中被篡改,使用void运算来把任意一个表达式变成undefined的值,void 是不能被重写的 , 用void 0 代替 undefined 能节省字节,好多js压缩工具在压缩过程中都是用 void 0 代替了 undefined。