void 0 和 undefined 的关系

在这里插入图片描述

   今天小编发现在一些编程规范中,为什么要求用void 0 替代 undefined?void 0 是什么?今天我们来了解一下这个问题。

   void 是一个运算符,用于获取原始数据类型undefined,它还可以将function关键字识别为函数表达式(立即执行函数),void 0还可以用于箭头函数以避免泄露。

   我们在控制台查看一下:void 0 === undefined ,他们两个是全等的。所以完全可以做替换。但是为什么好好的undefined不用,而用void 0 呢?
在这里插入图片描述
在vue的源码中,创建一个空节点的函数:

var createEmptyVNode = function (text) {
    // 这里的 void 0 代替 undefined
    if (text === void 0) text = '';
    var node = new VNode();
    node.text = text;
    node.isComment = true;
    return node
  };

我们看一下接下来这个例子

function test(){
    let undefined = "测试";
    console.log(undefined); // "测试"
    console.log(void 0); // undefined
}

   由上面的例子可以看出来:undefined是可以被改写的,而void 0则不会受影响,一直代表undefined

这里需要注意的是:
   undefined并不是保留字,它只是全局对象的一个属性,在低版本IE中能被重写,所以很多框架中,为了兼容低版本的浏览器,就会使用void 0 代替 undefined
   undefinedES5 中已经是全局对象的一个只读属性了,他不能被重写,但是在局部作用域中,还是可以被重写的。

更多关注我的微信公众号:
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值