tri*_*587 4 javascript google-closure-compiler
比较这些字符串:
{}[0]
[][0]
void 0
Run Code Online (Sandbox Code Playgroud)
为什么Closure Compiler会生成
void 0
Run Code Online (Sandbox Code Playgroud)
什么时候可以产生
[][0]
Run Code Online (Sandbox Code Playgroud)
或者
{}[0]
Run Code Online (Sandbox Code Playgroud)
甚至
[].a
Run Code Online (Sandbox Code Playgroud)
正如 torazaburo 提到的,哪个短了 1 个字符?
最小代码大小并不是 Closure 编译器的唯一目标。另一个目标(我假设)是生成与原始代码一样快的代码。
void 0在各种 JavaScript 运行时中可能会更快。它不必构造对象或数组并取消引用不存在的属性。
JavaScript 运行时引擎可能会优化掉{}[0]or [][0],但是为什么 Closure 编译器要依赖它呢?如果这些没有得到优化,它们将比void 0.
请记住,JavaScript 代码通常以压缩形式下载,如果void 0出现在多个位置,它们很可能会被压缩。
另请参阅 Blaise 的回答,了解另一个不使用{}[0]或的充分理由[][0]。
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |