为什么用 void 0 代替 undefined

undefined 不是保留词,它只是全局对象的一个属性,在低版本 IE 中能被重写。

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

为什么选择 void 0 作为?undefined 的替代品?

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注