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

相关推荐

  • 天猫魔盒3pro技巧

    天猫魔盒于今年9月份推出了一款售价299元的新品——天猫魔盒3 Pro。该机有意的外观+强悍的硬件,辅以丰富的内容,未来销量可期。混迹盒子市场多年,小编觉得是时候给已经入手3 Pr…

    2023年 6月 1日
  • mysql过滤表动态设置,mysql数据过滤怎么设置

    要对表里的数据进行过滤,则在select语句后边加上where和过滤条件。 过滤原理有两种:全表扫描过滤、索引扫描过滤。 ▲ 全表扫描过滤的原理: 从表的第一行的第一列开始扫描数据…

    2023年 8月 26日
  • qq城市一卡通充值

    继武汉、北京、深圳等城市实现用手机充值公交卡服务后,这一简单便捷的服务近日登陆苏州。苏州用户只需用手机碰碰市民卡,30秒即可完成充值。 苏州首个手机充值公交卡服务上线 QQ钱包充值…

    2023年 8月 15日
  • 百世快递的物流如何完成快速查询

    今天来教大家一个剪辑小技巧,可以批量的查询大量快递的物流,包括百世、韵达、顺丰等等,都是可以批量查询导出的,并且速度很快操作方法很简单,下面我们就一起来操作一下。 1、首先打开这款…

    2023年 9月 9日
  • 冷启动种子用户运营方案

    创业初期,缺钱、缺人、没名气,第一批种子用户的获取应该从哪里着手? 冷启动是每个运营人员都要面对的,是考验其运营的基本功,如果冷启动都做不好,怎么做其他的呢? 所谓冷启动,是数据挖…

    2023年 5月 23日
  • 趣头条激励体系是什么,趣头条的积分激励体系

    作者从社区金融系统、用户任务系统和用户等级体系三个方面对趣头条的用户激励体系进行拆解,发现不同类产品中的激励体系需要注意的问题。 2018年9月14日,趣头条在美国纳斯达克挂牌上市…

    2023年 7月 25日
  • 电脑突然断网连接不上网络怎么办

    很多小伙伴在使用电脑的时候,经常会出现断网,网络无法连接或者连接不上的情况,反复尝试好几次都没有效果。那么今天小编就教大家3种方法,解决无法连接网络的问题。 一、更新驱动程序 1、…

    2023年 5月 1日
  • U盘文件丢失怎么恢复,u盘文件丢失在哪恢复

    U盘文件丢失怎么恢复?公司职员小李​负责年会策划,他精心制作了一个快闪视频准备在年会开场播放,不料到了公司一看U盘里的视频文件却消失了,急得小李满头大汗,赶忙打来求助电话。很多人也…

    2022年 12月 27日
  • qq群机器人的功能介绍,qq群群主功能

    你只要将我开启,有人@我时,我会随叫随到。除了聊天,我还会很多呢,比如讲笑话、查天气、玩猜成语…… 当有新成员加入时,我还会出来迎接哦,快来开启我吧! 以下是关于群机器人的常见问题…

    2023年 6月 22日
  • 微信朋友圈能置顶说说吗,为什么有的朋友圈能置顶

    最近,微信朋友圈置顶功能成为话题中心。 7月24日,一位博主发帖称微信内测朋友圈置顶功能,至此#微信内测朋友圈可以置顶#相关话题迅速冲上微博热搜第一名。但是目前只有部分人可以使用。…

    2023年 9月 7日