javascript - 为什么js压缩器不这样做?

标签 javascript jquery

我一直想知道为什么 js 压缩器不这样做。假设我有一个像这样的缩小脚本:

(function($){var a=$("a");1<a.length&&10>a.length?alert(a.length):alert($("p").length)})(jQuery);

为什么它不能编译成这样:

(function($,L){var a=$("a");1<a[L]&&10>a[L]?alert(a[L]):alert($("p")[L])})(jQuery,'length');

意思是用[minified key]改变每次出现的.property,并将字符串和arg接收器传递给iife (基本上是我在上面对 .length 所做的)

想象一下,这会将 jQuery 缩小多少 159 个 .length、62 个 .each、15 个 .appendChild 等等。只是 .length 本身就可以节省 600 多个字节!

同样使用上面的示例,当您可以通过声明另一个参数在该函数范围内保留空间时,为什么它会在 var 关键字上浪费空间:

(function($,L,a){a=$("a");1<a[L]&&10>a[L]?alert(a[L]):alert($("p")[L])})(jQuery,'length');

另外,既然我有你在,为什么不将整个 jQuery 放入一个 eval 中并节省另外 572 个 function 关键字 (4.5k)?

最佳答案

我想它不想假设除了属性查找之外您还需要变量查找的费用。

如果您使用 Closure Compiler,如果您手动操作,它实际上会撤消这些类型的引用。

最终,如果您使用 gzip,我认为这些混淆加起来并不多。如果在某些情况下它实际上使您的 gzip 版本更大,我不会感到惊讶。

关于javascript - 为什么js压缩器不这样做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8867274/

相关文章:

javascript - 如何从输入表单中获取值,并在我的一个 javascript 函数中使用它

javascript - 如何在 Bootstrap 中正确对齐品牌形象

jquery - 根据 MVC 中的当前网页更改 li 类

javascript - 如何同时运行 ajax 调用 - php

javascript - 在此 d3.js 日历 View 中包含 json?

javascript - 等待ajax结果绑定(bind) knockout 模型

javascript - 三个点 - 溢出 :ellipsis

javascript - 使用 jQuery 通过动态 HTML 输入字段将商品总数量计算为商品价格

javascript - 我应该如何在express.js页面布局中填充数据

javascript - Jquery 的问题相当于 javascript createElement