为什么在使用requestAnimationFrame时使用此表达式

时间:2015-05-29 01:45:50

标签: javascript requestanimationframe

为什么在使用requestAnimationFrame时使用if if

if (!window.requestAnimationFrame)
        window.requestAnimationFrame = function(callback, element) {
            var currTime = new Date().getTime();
            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
            var id = window.setTimeout(function() { callback(currTime + timeToCall); },
              timeToCall);
            lastTime = currTime + timeToCall;
            return id;
        };

1 个答案:

答案 0 :(得分:0)

这段代码实现了requestAnimationFrame。它定义了一个全局函数requestAnimationFramewindow的所有成员都是全局变量),如果这样的函数不存在。

以下是对其作用的评论的简短说明:

if (!window.requestAnimationFrame) // if requestAnimationFrame doesn't exist
  window.requestAnimationFrame = 
    function(callback, element) { // define requestAnimationFrame
      /* implementation detail */
    };

这些代码称为polyfills - 在旧浏览器/ javascript引擎中实现较新版浏览器/ javascript引擎功能的代码。