微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 为什么闭包编译器会创建void 0而不是更短的替代?

比较这些字符串:

{}[0]
[][0]
void 0

为什么Closure Compiler生成

void 0

何时可以产生

[][0]

要么

{}[0]

甚至

[].a

正如torazaburo所说
哪个短1个字符?

解决方法

最小代码大小不是Closure编译器的唯一目标.另一个目标(我假设)是生成与原始代码一样快的代码.

在各种JavaScript运行时,void 0可能会更快.它不必构造对象或数组并取消引用不存在的属性.

JavaScript运行时引擎可能会优化{} [0]或[] [0],但为什么Closure编译器想要依赖它呢?如果那些没有得到优化,它们将明显慢于void 0.

请记住,JavaScript代码通常以压缩形式下载,如果void 0出现在多个位置,则它们可能会被压缩.

另请参阅Blaise的答案,另一个很好的理由是不使用{} [0]或[] [0].

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐