这段代码如何优化缩小?

时间:2014-10-02 08:37:38

标签: javascript minify

我看到一些代码here具有这些变量声明:

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

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

根据页面上的评论,这是为了改善缩小,但我无法弄清楚如何。有人能告诉我吗?感谢。

1 个答案:

答案 0 :(得分:22)

不能正确改善缩小 - 有问题的代码是requestAnimationFrame polyfill。这意味着它将尝试不同的供应商前缀。因此,有时代码将是"requestAnimationFrame"(小写r),有时会使用供应商前缀,例如msRequestAnimationFrame

因此,它是动态构建的,"equestAnimationFrame"始终存在,但可能会以"r""R"为前缀。

"改善缩小"部分是因为而不是写作:

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

他们在["ms","moz","o", "webkit"]上运行for循环并尝试前缀。这最多可以节省几个字节。

以下是我认为更清晰并且做同样事情的代码:

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];