大前端

void 0与undefined

2020-01-27  本文已影响0人  高级程序狗

最近在查看ts编译源码的时候,注意到一个陌生的void 0语句,似乎是取代了undefined
so,为什么要用void 0代替undefined

var undefined = 10;
 
// undefined -- chrome
// 10 -- IE 8
alert(undefined);

好气啊~IE什么事情都能搞出来!是不是不用兼容就可以不考虑了?

(function() {
  var undefined = 10;
  alert(undefined);// 10 -- chrome
})();
 
(function() {
  undefined = 10;
  alert(undefined);// undefined -- chrome
})();

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

上一篇 下一篇

猜你喜欢

热点阅读