javascript关键字有void吗

这是一个更好的选择

Javascript 中不需要 void 0

在 Javascript 代码中,尤其是在较旧的遗留代码中,您有时会发现表达式 void 0。

void 运算符计算表达式并返回未定义的原始值。 void 0 计算 0,它什么都不做,然后返回 undefined。 它实际上是未定义的别名。

为什么 void 0 用作 undefined 的别名?

Javascript 的一个怪癖是 undefined 不是保留关键字。

相反,它是全局对象的属性。

在 ES5 (2009) 之前,可以修改未定义的全局属性,这可能导致未定义的意外行为。

考虑以下示例(在现代 Javascript 引擎中不起作用):

// Pre-ES5 example - does not work in modern JS engines:// changes property 'undefined' on the global object:undefined = "something else"; // potentially in some other Javascript file or script section:if (aVariable === undefined) { // aVariable is equal to "something else", // but not to the primitive value 'undefined' doSomething();}

修改未定义的全局甚至可能发生在第 3 方代码中,例如通过脚本标签导入的库。 由于 void 0 总是返回未定义的实际原始值,因此在 ES5 之前通常使用它来使代码对未定义的全局属性的重新定义进行故障保护。

ES5 之后的全局属性‘undefined’

undefined 可以在全局对象上修改的问题非常大,以至于 Javascript 标准被改变了。

在 ES5 中,全局属性 undefined 变成了只读的。

尝试更改值在现代 Javascript 中没有任何作用:

globalThis.undefined = "something else";console.log(undefined); // prints undefined in modern browsers

未定义仍然可以被局部变量遮蔽

但是,虽然不再可能更改 undefined 全局属性,但 undefined 仍然不是 Javascript 中的保留关键字。 因此它仍然可以被局部变量遮蔽:

const undefined = "something else";let check = aVariable === void 0; // void 0 is needed here

有一个名称为 undefined 的局部变量是您要避免的陷阱。 ESLint 规则 no-undefined 不允许使用 undefined 作为变量名并防止出现阴影问题。

void 0 可以帮助减小捆绑包的大小吗?

表达式 void 0 比 undefined 短。 Javascript 包大小对于创建快速加载的网站至关重要,减少几个字节会有所帮助。

但是,最好将基本的代码大小优化留给诸如 Terser 之类的压缩程序,作为产品捆绑过程的一部分。 它们可以执行许多不同的优化,并且源代码仍然更具可读性,无需任何手动代码大小优化,例如使用 void 0 而不是 undefined。

在现代 Javascript 中避免使用 void 0

总而言之,在现代浏览器和 Javascript 引擎中,没有理由再使用 void 0 了:

  • 全局属性 undefined 在 ES5 和更新的环境中无法更改
  • 使用 ESLint 规则 no-undefined 可以禁止名称为 undefined 的局部变量
  • 在创建生产包时,缩小器可以用 void 0 替换 undefined

相反,void 0 使 Javascript 代码更难阅读和理解,因为您需要知道 void 0 的含义,并为同一概念 (undefined) 处理不同的术语 (void 0, undefined)。

您可以使用 undefined 并删除不必要的 void 0 并发症。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com

(0)
上一篇 2023年 4月 24日 下午12:41
下一篇 2023年 4月 24日 下午12:50

相关推荐

  • 别人精彩的微信朋友圈,能转发吗知乎

    微信作为时下较为流行的社交软件,有很多比较有趣的功能,比如朋友圈。 通过朋友圈我们可以发表文字、图片和视频,同时可以通过其他软件将文章或者音乐分享到朋友圈。也可以对好友新发表的内容…

    2023年 6月 21日
  • Notepad++安装插件的方式(32位、64位)

    Notepad++ 这个工具还是很强大的,当前有两个版本,一个32位、一个64位。在64位版本中没有向32位版本那样可以直接在Plugin Manager安装插件 所以下面介绍no…

    2022年 12月 17日
  • 安卓手机如何快速打开健康码(安卓双击怎么秒开健康码)

    小编前几天给大家介绍过利用华为手机鸿蒙系统的智慧生活在控制中心打开健康码的方法,这个方法虽然不错,但毕竟有一定的局限性,没有鸿蒙系统不能进行这个操作,今天给大家介绍一种安卓通用的快…

    2023年 2月 11日
  • 直播答题的新含义,互动答题的营销模式

    众所周知,互联网正在进入下半场,用户和流量红利逐渐消失,这也给广告主带来极大的困扰,媒介和获客成本不断攀升,市场营销投资回报率呈现下滑趋势。 为了最大化提升ROI,广告主产生了两方…

    2023年 3月 9日
  • 怎样设置微信到账一万元铃声,怎么设置微信到账十万元手机铃声

    #头条创作挑战赛# 嗨,大家好,我是大海,欢迎大家来欣赏我的文章,我每天给大家分享手机实用技巧,实用技巧持续更新,有的友友问我,咱们的老婆或老公手机微信到帐的声音怎样设置呢?请跟我…

    互联网 2022年 12月 22日
  • 图片去水印怎么弄?用这个方法轻松搞定

    我来啦,今天分享几个去水印的好办法,手机、电脑都可以,想要给图片去水印的赶快试试吧! 1.美图秀秀 美图秀秀相信大家手机里都有一个吧,P图APP的大佬,用它就可以简单几步消除图片的…

    2023年 9月 2日
  • 掌阅iReader Light2

    “书中自有黄金屋,书中自有颜如玉”、“行万里路,读万卷书”、“读书破万卷,下笔如有神”等等名言对读书的重要性充分肯定,通过读书不仅给我们带来知识,同时还能让我们增长见识,带给我们快…

    2022年 12月 31日
  • 手机怎样连接路由器,手机如何选择路由器

    手机控制路由器,就是用手机配置路由器里面的参数。首先需要把手机接入到路由器。无线路由器可以直接在手机WLAN中,搜索无线路由器的无线名称连接,有线路由器需要通过无线设备连接在一块。…

    互联网 2023年 5月 2日
  • 三大运营商自查不限量套餐,将规范宣传行为及资费公示

    现在智能手机已经成为了人们上网的一个重要途径,根据中国互联网络信息中心发布的《第39次中国互联网络发展状况统计报告》显示,截至2016年12月,我国手机网民规模已达6.95亿,比2…

    2023年 8月 1日
  • u盾用户级别,u盾指令明细

    U盾是中国工商银行的安全认证介质,主要用于保护电子银行办理转账、缴费、支付等业务的安全。 据了解中国工商银行推出的U盾,已经获得国家专利的客户证书USBkey,属于电子银行业务高级…

    2023年 6月 11日