Как этот код оптимизирует минимизацию?

Я видел код здесь, в котором были эти объявления переменных:

var equestAnimationFrame = 'equestAnimationFrame',
    requestAnimationFrame = 'r' + equestAnimationFrame,

    ancelAnimationFrame = 'ancelAnimationFrame',
    cancelAnimationFrame = 'c' + ancelAnimationFrame

В соответствии с комментарием на странице, это должно улучшить минимизацию, но я не мог понять, как это сделать. Может кто-нибудь мне сказать? Спасибо.

Ответ 1

Это не улучшит правильность мини-кода - этот код является requestAnimationFrame polyfill. Это означает, что он собирается попробовать разные префиксы поставщиков. Поэтому иногда код будет "requestAnimationFrame" (строчный r) и иногда с префиксом поставщика, например msRequestAnimationFrame.

По этой причине он построен динамически, "equestAnimationFrame" всегда существует, но он может иметь префикс "r" или "r".

Часть "улучшить минимизацию" заключается в том, что вместо написания:

var requestAnimationFrame = window.requestAnimationFrame || 
                            window.msRequestAnimationFrame ||
                            window.mozRequestAnimationFrame ||
                            window.webkitRequestAnimationFrame ||
                            window.oRequestAnimationFrame ||

Они запускают цикл for на ["ms","moz","o", "webkit"] и используют префиксы. Это экономит несколько байтов в лучшем случае.

Вот код, который я считаю более ясным и делает то же самое:

var base = "equestAnimationFrame" // the base string
var alternatives = window["r"+base] || // try the basic option first
['moz', 'ms', 'o', 'webkit'].map(function(x){ 
    return x+"R" + base; // all the options
}).filter(function(x){ // check if in window
    return x in window;
})[0];