javascript underscore 代码解析

1. void  0 代替undefined( why does void 0 replace undefined )

  首先当大师们都使用void 0 来代替 undefined的时候,我们就需要思考两个问题。

   第一 undefined有哪里不好 第二void 0哪里好。因为我们肯定是用一个好的东西来代替不好的。

   第一点,答案很简单,undefined 并不是保留词(reserved word),它只是全局对象的一个属性,在低版本 IE 中能被重写。

  

  事实上,undefined 在 ES5 中已经是全局对象的一个只读(read-only)属性了,它不能被重写。但是在局部作用域中,还是可以被重写的。

  

2. 为什么是void 0

  官方文档解释 The void operator evaluates the given expression and then returns undefined.

  意思是说 void 运算符能对给定的表达式进行求值,然后返回 undefined。也就是说,void 后面你随便跟上一个表达式,返回的都是 undefined,都能完美代替 undefined!那么,这其中最短的是什么呢?毫无疑问就是 void 0 了。其实用 void 1,void (1+1),void (0) 或者 void “hello”,void (new Date()) 等等,都是一样的效果。更重要的前提是,void 是不能被重写的(cannot be overidden)。

  那么,ES5 大环境下,void 0 就没有用武之地了吗?答案是否定的,用 void 0 代替 undefined 能节省不少字节的大小,事实上,不少 JavaScript 压缩工具在压缩过程中,正是将 undefined 用 void 0 代替掉了。

posted on 2016-09-20 09:16  Befacebook  阅读(110)  评论(0)    收藏  举报