js-void 0 小技巧

一、背景

最近在查看vue3的相关源码,无意中发现作者一种写法

    if (key !== void 0) {
     deps.push(depsMap.get(key))
   }

void 0 是什么鬼,记得以前<a href="javascript:void(0)"> 这种写法,表示阻止<a>标签链接跳转。但是代码里void 0是啥意思

二、翻看API

void operator
The void operator evaluates the given expression and then returns undefined.
中文释义:void 运算符对给定的表达式进行求值,然后返回 undefined。

看到这里就明白了:void后面无论是什么值,都是返回的undefined,也就是说这边用void 0 来代替undefined

三、为什么用void 0 来代替 undefined,跟直接写undefined有什么区别

翻看文档

The undefined global property represents the primitive value undefined. It is one of JavaScript’s primitive types.
中文释义:undefined全局属性表示原始值undefined。它是JavaScript的基本类型之一。
重点:全局属性 或者说重点属性
我们知道在javascript中只要是对象的属性,那必然有具备三个属性WritableEnumerableConfigurable分别表示是否可写是否可枚举是否可配置。想到这里,我大概知道是什么原因了,又查阅了相关资料,果然是,参考下其他小伙伴的总结:

总结:
为什么要用void 0 替代undefined
①某些情况下用undefined判断存在风险,因undefined有被修改的可能性,但是void 0返回值一定是undefined
②兼容性上void 0 基本所有的浏览器都支持
③ void 0比undefined字符所占空间少。

详细细节部分可阅读这边博文——js冷知识void 0是什么?为什么比undefined好用?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值