Логика минимизации Javascript, в которой задействованы неизменные свойства
Вопрос по минимизирующей логике.
// Assumptions:
//com.example.dummy ns is available
//com.example.dummy.type is defined immutable -> Object.defineProperty
var test, test1, test2;
function execute_case(id) {
switch(id) {
case 0:
test = com.example.dummy.type;
break;
case 1:
test1 = com.example.dummy.type;
break;
case 2:
test2 = com.example.dummy.type;
break;
default:
console.log("default");
break;
}
}
компрессор YUI сжимает его,
var test,test1,test2;function execute_case(a){switch(a){case 0:
test=com.example.dummy.type;break;case 1:test1=com.example.dummy.type;break;
case 2:test2=com.example.dummy.type;break;default:console.log("default");break}};
Разве не было бы логично для компрессора сделать следующее в качестве оптимизации?
var test, test1, test2;
var st = com.example.dummy.type;
function execute_case(id) {
switch(id) {
case 0:
test = st;
case 1:
test1 = st;
break;
case 2:
test2 = st;
break;
default:
console.log("default");
break;
}
}
Как видно, сжатие здесь работает лучше.
var test,test1,test2;var st=com.example.dummy.type;function execute_case(a){
switch(a){case 0:test=st;case 1:test1=st;break;case 2:test2=st;break;
default:console.log("default");break}};
1 ответ
Решение
Эта оптимизация имеет смысл для несжатого исходного кода, но не в том случае, если файл доставляется со сжатием gzip (что настоятельно рекомендуется).
Строковый псевдоним имеет тенденцию увеличивать сжатый исходный код.
Смотрите FAQ по компилятору