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].

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...