javascript匿名函数评估成语

时间:2013-08-09 16:35:01

标签: javascript anonymous-function

为什么我们要打扰创建一个立即评估的匿名功能块, 如下所示(我看到一个常见的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);
          };

1 个答案:

答案 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);
相关问题