实际上,void的返回值都是undefined。 https://developer.mozilla.org…
在ES5之前,window下的undefined是可以被重写的,于是导致了某些极端情况下使用undefined会出现必定的差错。
所以,用void 0是为了防止undefined被重写而出现判断不准确的情况。
注: ES5之后的标准中,规定了全局变量下的
undefined值为只读,不可改写的,但是局部变量中依然可以对之进行改写。
补充一下:非严格模式下,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
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...


