js:用void 0替换undefined

  • undefined作为js中的一个全局对象的属性,并不是关键字或保留字。并且在ES5之前,undefined都是可以被重写的。(ES5以后规定undefined为全局的只读属性,但是局部变量中依然可以被改写,如:
    改写undefined.png

    容易出现差错)
  • 关键字void能对给定的表达式求值,但是返回值都是undefined。并且不能被重写。
image.png
  • 所以使用void 0代替undefined,来避免因重写undefined而带来的不确定的问题

另附https://segmentfault.com/q/1010000007406985?_ea=1343662,大神提供的另一个理由,void 0undefined省了三个字符,还有一些简便写法:

//取整
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

你可能感兴趣的:(js:用void 0替换undefined)