Предварительное сжатие яваскрипта хорошо по двум причинам: во-первых, файл теряет в весе, а во-вторых, пожатый файл проще парсить и исполнять яваскриптовому движку. Конечно, если минифаить «неэффективный» код, то пожмется он незначительно, да и парсить его остается так же сложно.
Чтобы избежать всех этих неэффективностей, можно выработать такой стиль программирования, при котором код и жмется хорошо, и исполняется быстро ;)
Можно начать с кеширования значений, которые часто используются в функции, но их получение из внешнего мира затратно. Здесь налицо выгода при сжатии: минифаер поймет, что переменная локальная и сожмет ее имя в один символ. Интерпретатор при исполнении такого кода будет точно знать, что используется локальная копия далекого объекта. А локальная копия гораздо быстрее ветвистых поисков в объектах и массивах. Например,
var name = this.conf.name, defs = this.defs
this.save(defs[name] || (defs[name] = {}))
немного лучше чем
this.save(this.defs[this.conf.name] || (this.defs[this.conf.name] = {}))
Первое пожмется в
var n=this.conf.name,d=this.defs;this.save(d[n]||(d[n]={}))
а второе в
this.save(this.defs[this.conf.name]||(this.defs[this.conf.name]={}))
то есть не пожмется вообще. Можно еще this закешировать, и будет еще на два байта меньше:
var t=this,n=t.conf.name,d=t.defs;t.save(d[n]||(d[n]={}))
но это мы предоставим гзипу — он автоматический :)
Кеширование переменных гораздо лучше копипаста, встречающегося на вольных просторах интернета. Типа этого:
this.conf.name.first = "Vasya"
this.conf.name.second = "Poupkine"
преобразуется в
var name = this.conf.name
name.first = "Vasya"
name.second = "Poupkine"
и, соответственно, сжимается в
var n=this.conf.name;n.first="Vasya";n.second="Poupkine"
Подобные оптимизации совсем не обязательны и могут отвлекать от процесса творческого программирования. Но если привыкнуть к ним и начать думать как оптимизатор кода (в яваскрипте же его нет), то писать такой код можно уже без напряжения. Если ваш код будет использоваться часто и интенсивно, но изменен будет нескоро, то такая оптимизация как раз для вас. Можно, конечно, подождать многопроходного компилятора с оптимизатором и кроссбраузерного байткода, да когда они еще будут-то…