Mic*_*ary 5

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

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

JavaScript 运行时引擎可能会优化掉{}[0]or [][0],但是为什么 Closure 编译器要依赖它呢?如果这些没有得到优化,它们将比void 0.

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

另请参阅 Blaise 的回答,了解另一个不使用{}[0]或的充分理由[][0]