Javascript 这段代码如何优化缩小?
我看到了一些包含以下变量声明的代码:Javascript 这段代码如何优化缩小?,javascript,minify,Javascript,Minify,我看到了一些包含以下变量声明的代码: var equestAnimationFrame = 'equestAnimationFrame', requestAnimationFrame = 'r' + equestAnimationFrame, ancelAnimationFrame = 'ancelAnimationFrame', cancelAnimationFrame = 'c' + ancelAnimationFrame 根据页面上的一条评论,这是为了改进缩小效
var equestAnimationFrame = 'equestAnimationFrame',
requestAnimationFrame = 'r' + equestAnimationFrame,
ancelAnimationFrame = 'ancelAnimationFrame',
cancelAnimationFrame = 'c' + ancelAnimationFrame
根据页面上的一条评论,这是为了改进缩小效果,但我不知道该怎么做。有人能告诉我吗?谢谢。这并不是为了提高缩小的正确性-所讨论的代码是一个polyfill。这意味着它将尝试不同的供应商前缀。因此,有时代码将是
“requestAnimationFrame”
(小写r
),有时带有供应商前缀,如msRequestAnimationFrame
由于这个原因,它是动态构建的,“equalStationFrame”
总是在那里,但它的前缀可能是“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];
老实说,我认为“未统一”版本更具可读性。@Ajedi32我完全同意。此外,假设代码是gzip的,即使不是,我怀疑这会在文件大小上产生显著的差异。有时,显而易见的解决方案是更好的。如果你是为了大量的财产而这样做的,那么节省的尺寸将累积起来并变得显著。@AJED32这就像说未冷冻的肉比冷冻的肉更美味——当然是这样。缩小的代码并不意味着可读。我认为这是因为后来他们使用了
ancelAnimationFrame
,就像在窗口[vendor+'R'+equalanimationframe]