为什么我们要打扰创建一个立即评估的匿名功能块, 如下所示(我看到一个常见的JS习语)?
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(/* function */ callback, /* DOMElement */ element){
window.setTimeout(callback, 1000 / 60);
};
})();
相反,为什么不使用更直接的路线?
window.requestAnimFrame =
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(/* function */ callback, /* DOMElement */ element){
window.setTimeout(callback, 1000 / 60);
};
答案 0 :(得分:2)
上面的代码没有理由,因为匿名函数中没有任何局部变量。尽管如此,利用它来缩短你的代码可能是合理的,但绝对没有必要。例如:
window.requestAnimFrame = (function(w){
return w.requestAnimationFrame ||
w.webkitRequestAnimationFrame ||
w.mozRequestAnimationFrame ||
w.oRequestAnimationFrame ||
w.msRequestAnimationFrame ||
function(/* function */ callback, /* DOMElement */ element){
w.setTimeout(callback, 1000 / 60);
};
})(window);