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

相关推荐

  • 如何设置无线路由器桥接功能

    本文将向大家介绍如何通过手机配置无线路由器。 对其他无线产品,第一次设置的过程可能稍有不同,建议您选择对应的产品类型: 以下是手机无线连接无线路由器的配置视频: 1. 连接线路 将…

    2023年 11月 13日
  • 产品推广软文怎么写记住这几点

    随着市场竞争的加剧,产品宣传推广软文已成为企业推广产品的重要手段之一。然而,如何写好一篇具有说服力的产品宣传推广软文呢?以下是一些写作技巧和注意事项。 1.确定目标受众 在写作产品…

    2023年 4月 9日
  • 如何把图片转换成word文档免费

    我们时常需要将图片上的文字资料归纳整理下来,转成Word文档的形式会方便很多,下面给大家介绍一下如何把图片转换成word文档,有多种方式,咱们自由选择。 方式一、直接添加图片转换成…

    2023年 6月 15日
  • 阿狸新皮肤灵魂莲华多少钱(lol阿狸哪个皮肤有特效而且又好)

    10.15版本在外服正式更新后,10.16版本也立刻上线了测试服,在这次新版本中,拳头继续发布了灵魂莲花系列皮肤第二弹,目前这套皮肤作为夏季节日活动将持续大约两个版本,可以说是LO…

    2023年 10月 27日
  • 如何通过花生壳远程调试,开发web应用使用花生壳

    电脑网络的诞生给我们的工作和生活提供了很多便利,通过网络我们可以远程购物,不用到实体店就买到喜欢的产品。我们还可以远程观看直播,不用到现场就知道发生了什么。我们还可以远程办公…… …

    2023年 5月 13日
  • 男朋友手机上有这五个app,发现男朋友喜欢用什么软件

    大家好,我是小牡丹~ 男朋友手机里的秘密总是能无限激发女孩们的好奇心,虽然我们不想查些出什么,但是不去一一翻看一遍,我们不放心呀。查得就是一份稳稳地安全感。如果你有机会翻看男朋友得…

    2023年 3月 7日
  • 微信怎么群发消息给所有人(怎么样能看出微信是群发还是单发)

    微信作为很多小伙伴经常使用的工具,无论是学习、工作还是其他方面都会使用到。有些时候,需要将同一条消息发给通讯录里的大多数人,一条一条的转发太慢了,群发消息给所有人是个不错的办法。微…

    2023年 3月 11日
  • m7675dxf传真接收使用方法

    本文章提供的技术方案或与您产品的实际情况有所差异,您需在完整阅读方案并知晓其提示风险的情况下谨慎操作,避免造成任何损失。 故障现象: M7655DHFM7655DNFM7675DX…

    2023年 6月 1日
  • iPhone 13和iPhone 14有什么区别

    对于这个问题,可以说是已经比较“老掉牙”的了,自从去年9月份iPhone14进行发布,过去近一年期间,就已经有无数人讨论过这个问题了,这两款手机之间的区别是有的,但是这些区别大多对…

    2023年 8月 29日
  • 拼多多海外版Temu怎么样

    国内的拼多多因为价格低廉和其特别的营销方式,取得了不错的成绩。在大洋彼岸,另一个“拼多多”Temu正在崛起,但它并没有完全沿用拼多多的模式。本文对Temu进行体验,分享初次体验的感…

    2023年 3月 6日