为什么要用void(0)代替undefined?
其实遇到这个问题的时候,很诧异,作为3年前端工作经验的小白,居然对基本类型不是很了解
其实呢,是因为 JavaScript 的代码 undefined 是一个变量,而并非是一个关键字,它只是全局对象的一个属性,在低版本 IE 中能被重写。
var undefined = 10; // undefined -- chrome // 10 -- IE 8 alert(undefined);
但实际上在ES5的时候,undefined已经是全局对象的一个只读(read-only)属性了,它不能被重写。但是在局部作用域中,还是可以被重写的。
(function(){ var undefined = 10 alert(undefined) })() // 10 var undefined (function(){ undefined = 9 alert(undefined) })()// undefined (function(){ var a = void(0) alert(a === undefined?1:0) })() // 1
void 运算符能对给定的表达式进行求值,然后返回 undefined。也就是说,void 后面随便跟上一个表达式,返回的都是 undefined,都能完美代替 undefined,用 void 0 代替 undefined 能节省不少字节的大小。
参考:https://github.com/lessfish/underscore-analysis/issues/1
每一个努力的人都值得被肯定,但是最大的肯定来源于自己!!!
加油每一天!!!