-
undefined
作为js中的一个全局对象的属性,并不是关键字或保留字。并且在ES5之前,undefined
都是可以被重写的。(ES5以后规定undefined
为全局的只读属性,但是局部变量中依然可以被改写,如:
容易出现差错) - 关键字
void
能对给定的表达式求值,但是返回值都是undefined
。并且不能被重写。
- 所以使用
void 0
代替undefined
,来避免因重写undefined
而带来的不确定的问题
另附https://segmentfault.com/q/1010000007406985?_ea=1343662,大神提供的另一个理由,void 0
比undefined
省了三个字符,还有一些简便写法:
//取整
parseInt(a,10); //Before
Math.floor(a); //Before
a>>0; //Before
~~a; //After
a|0; //After
//四舍五入
Math.round(a); //Before
a+.5|0; //After
//内置值
undefined; //Before
void 0; //After, 快
0[0]; //After, 略慢
//内置值
Infinity;
1/0;
//布尔值短写法
true; //Before
!0; //After
//布尔值短写法
false; //Before
!1; //After