{}[0] [][0] void 0
为什么Closure Compiler生成
void 0
何时可以产生
[][0]
要么
{}[0]
甚至
[].a
正如torazaburo所说哪个短1个字符?
在各种JavaScript运行时,void 0可能会更快.它不必构造对象或数组并取消引用不存在的属性.
JavaScript运行时引擎可能会优化{} [0]或[] [0],但为什么Closure编译器想要依赖它呢?如果那些没有得到优化,它们将明显慢于void 0.
请记住,JavaScript代码通常以压缩形式下载,如果void 0出现在多个位置,则它们可能会被压缩.
另请参阅Blaise的答案,另一个很好的理由是不使用{} [0]或[] [0].