美文网首页
JavaScript中void 0 与 undefined的区别

JavaScript中void 0 与 undefined的区别

作者: agamgn | 来源:发表于2020-02-13 07:54 被阅读0次

前言

我们有些时候会看到这样的写法

var arr;
if(arr === void 0){}

void 0 返回undefined,但是为什么不直接 写undefined?


void.png

原因

1、undefined可以被重写

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

(function(){
    var undefined=10;
    console.log(undefined);
})()//10

2、void 0 替代undefined的优越性

void 运算符能对给定的表达式进行求值,然后返回 undefined。也就是说,void 后面你随便跟上一个表达式,返回的都是 undefined,如 void (2), void (‘hello’)。并且void是不能被重写的。但为什么是void 0 呢,void 0 是表达式中最短的。用 void 0 代替 undefined 能节省字节。不少 JavaScript 压缩工具在压缩过程中,正是将 undefined 用 void 0 代替掉了。

3.、void的其他作用

当用户点击一个以 javascript: URI 时,它会执行URI中的代码,然后用返回的值替换页面内容,除非返回的值是undefined。void运算符可用于返回undefined。例如:

<a href="javascript:void(0);">
  这个链接点击之后不会做任何事情,如果去掉 void(),
  点击之后整个页面会被替换成一个字符 0。
</a>
<p> chrome中即使<a href="javascript:0;">也没变化,firefox中会变成一个字符串0 </p>
<a href="javascript:void(document.body.style.backgroundColor='green');">
  点击这个链接会让页面背景变成绿色。
</a>

总结

void 运算符
本节代码

相关文章

网友评论

      本文标题:JavaScript中void 0 与 undefined的区别

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