美文网首页大前端
void 0与undefined

void 0与undefined

作者: 高级程序狗 | 来源:发表于2020-01-27 16:26 被阅读0次

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

  • undefined不是保留字,它只是全局对象的一个属性,在低版本IE能被重写:
var undefined = 10;
 
// undefined -- chrome
// 10 -- IE 8
alert(undefined);

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

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

相关文章

  • void 0 与 undefined

    在看React的react-dom.js源码的时候,发现void 0,在很多地方用到。回忆起最初使用void 0的...

  • void 0与undefined

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

  • 一些小Tips

    1、void 0 代替 undefined 经常会看到 if (callback !== void 0 ) opt...

  • === void 0 及 === undefined

    参考:https://segmentfault.com/q/1010000007406985/a-10200000...

  • void 0和undefined

    参考链接:1. JavaScript中void 0和undefined[https://www.cnblogs.c...

  • void 0 与 undefined的区别

    想知道下面这段代码会被编译成什么吗 就是下面这段代码,看到没有,仅仅多了一个?将长篇大论的三元表达式交给编译器去处...

  • void 0 代替 undefined 避免 undefined

    在一些低版本的浏览器中,undefined是可以被赋值的。 我们来看看MDN的解释: The void opera...

  • JS老司机技巧

    //void 0代替undefined;function(){return void 0;}除了防止被重写外,还可...

  • TypeScript 基础语法

    1、void 与 undefined和 null 与 void的区别是,undefined 和 null是所有类...

  • JS基础(二)

    判断数据类型、非数值的转换、相等与全等、break与continue、void 0 与undefined type...

网友评论

    本文标题:void 0与undefined

    本文链接:https://www.haomeiwen.com/subject/ssdethtx.html