Я всегда задавался вопросом, почему компрессоры js этого не делают. Скажем, у меня есть Минимизированный сценарий вроде этого:Почему компрессоры 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');
Значение меняется каждое вхождение в .property
с [minified key]
и передать строку и Arg приемник к iife
(в основном то, что я сделал выше, с .length
)
Представьте себе, сколько еще это будет Минимизировать JQuery с 159 .length
, 62 .each
, 15 .appendChild
и т. Д. Только только .length
сэкономит более 600 байт!
Кроме того, используя вышеприведенный пример почему это тратить место на вар ключевое слово, когда вы можете зарезервировать место в том, что функции сферы, объявив еще один параметр:
(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)?
Раньше я писал JS так, что иногда делаю. Также делайте некоторые читы с String.prototype.IO = String.prototype.indexOf или Us = 'undefined'; Ss = 'string'; Ow = window; и String.prototype.has (s) –