解释requestAnimationFrame填充层

鹰眼

在requestAnimationFrame shim层上查看Paul Irish以下代码我想用另一种语言生成这个js,所以我想把事情弄清楚。(您可以在此处看到它在动画中的使用)。

window.requestAnimFrame = (function(){                //1
  return  window.requestAnimationFrame       ||       //2
          window.webkitRequestAnimationFrame ||       //3
          window.mozRequestAnimationFrame    ||       //4
          function( callback ){                       //5
            window.setTimeout(callback, 1000 / 60);   //6
          };                                          //7
})();                                                 //8
                                                      //9
(function animloop(){                                 //10
  requestAnimFrame(animloop);                         //11
  render();                                           //12
})();                                                 //13

我的问题是-第2-4行发生了什么?我们似乎正在获取函数句柄,将它们一起进行OR运算-然后将OR运算结果分配给第1行中的匿名函数-然后将其分配给var window.requestAnimFrame

编辑:感谢所有有用的答案-我只想确保我有正确的答案-以下是对所发生情况的准确表示吗?这是原始版本)(这是带有更明确代码的版本。)

var myfunc = function() {
    if (typeof(window.requestAnimationFrame) != "undefined") {
        return window.requestAnimationFrame;
    } else if (typeof(window.webkitRequestAnimationFrame) != "undefined") {
        return window.webkitRequestAnimationFrame;
    } else if (typeof(window.mozRequestAnimationFrame) != "undefined") {
        return window.mozRequestAnimationFrame;
    } else {
        return function(callback) {
            window.setTimeout(callback, 1000 / 60);
        };
    }
};
window.requestAnimFrame = myfunc;
伍迪

JavaScript逻辑或(不是二进制或)将使用“真实”值-考虑例如

window.foo = window.foo || function() {};

在这种情况下,因为window.foo不存在,所以我们将返回第二个opearnd,如果存在-则OR表达式的值将为第一个操作数。空值或未定义的值是“ falsey”-尽管还有其他falsey值-Google找出它们是什么。

您可以这样阅读:

将属性requestAnimFrame分配给调用自身的函数的输出。这是一个奇怪的概念,但由于JavaScript的作用域规则而通常采用该概念,它可以防止函数内部的任何变量泄漏到全局范围内。这里要注意的重要一点是在第7行,最后的()调用从第1行开始的函数表达式。

该函数返回window.requestAnimationFrame或window.webkitRequestAnimationFrame或window.mozRequestAnimationFrame,或者最后返回(如果不存在(因此为false)),该函数将请求动画帧实现为超时-这就是垫片。

最后,您获得了指向函数的requestAnimFrame,它要么是已经存在的带有标准名称的内置函数,要么是供应商前缀名称或shim函数。

HTH。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在每个requestAnimationFrame处理程序之后都有“更新层树”和“复合层”任务?

来自分类Dev

如何在彼此上方填充Google Maps数据层的颜色?

来自分类Dev

Chart.js 2-轴层填充

来自分类Dev

查找填充卷积层输入的零数量

来自分类Dev

表中无序列表中的无法解释的填充

来自分类Dev

我们正在使用哪些浏览器使用Paul Irish的requestAnimationFrame填充程序?

来自分类Dev

我们正在使用哪些浏览器使用Paul Irish的requestAnimationFrame填充程序?

来自分类Dev

根据三层应用程序中的下拉列表填充文本框

来自分类Dev

如何将所选内容填充到sublimeText3 ctrl + p叠加层?

来自分类Dev

为什么我不能在该图中添加填充层

来自分类Dev

geobox源上的填充层“闪烁”的Mapbox GL JS v2.0问题

来自分类Dev

在GIMP中的透明层上自动执行存储桶填充操作

来自分类Dev

反卷积层不接受带有双线性填充的 5D blob

来自分类Dev

使用来自特定 raterstack 层的值填充每个像素创建新栅格

来自分类Dev

有人可以解释为什么MVC优于三层体系结构吗?

来自分类Dev

用本机字节顺序解释struct.pack中的额外填充

来自分类Dev

工具栏和LinearLayout之间的左侧无法解释的间隙/填充

来自分类Dev

python如何解释字符串宽度和零填充?

来自分类Dev

用CGPattern填充MKPolygon时,多边形叠加层会相互干扰(使用Quartz 2D)

来自分类Dev

用nil填充堆栈并将“ top”解释为最后一个非nil值有什么好处吗?

来自分类Dev

用nil填充堆栈并将“ top”解释为最后一个非nil值有什么好处吗?

来自分类Dev

引导程序。有人可以解释为什么我在图片的上方和下方进行填充吗?

来自分类Dev

高于60 fps的requestAnimationFrame

来自分类Dev

用requestAnimationFrame动画div

来自分类Dev

在类中使用requestAnimationFrame

来自分类Dev

requestAnimationFrame实现递归吗?

来自分类Dev

requestAnimationFrame处理顺序

来自分类Dev

控制敌人的速度RequestAnimationFrame

来自分类Dev

JavaScript画布+ requestAnimationFrame口吃

Related 相关文章

  1. 1

    为什么在每个requestAnimationFrame处理程序之后都有“更新层树”和“复合层”任务?

  2. 2

    如何在彼此上方填充Google Maps数据层的颜色?

  3. 3

    Chart.js 2-轴层填充

  4. 4

    查找填充卷积层输入的零数量

  5. 5

    表中无序列表中的无法解释的填充

  6. 6

    我们正在使用哪些浏览器使用Paul Irish的requestAnimationFrame填充程序?

  7. 7

    我们正在使用哪些浏览器使用Paul Irish的requestAnimationFrame填充程序?

  8. 8

    根据三层应用程序中的下拉列表填充文本框

  9. 9

    如何将所选内容填充到sublimeText3 ctrl + p叠加层?

  10. 10

    为什么我不能在该图中添加填充层

  11. 11

    geobox源上的填充层“闪烁”的Mapbox GL JS v2.0问题

  12. 12

    在GIMP中的透明层上自动执行存储桶填充操作

  13. 13

    反卷积层不接受带有双线性填充的 5D blob

  14. 14

    使用来自特定 raterstack 层的值填充每个像素创建新栅格

  15. 15

    有人可以解释为什么MVC优于三层体系结构吗?

  16. 16

    用本机字节顺序解释struct.pack中的额外填充

  17. 17

    工具栏和LinearLayout之间的左侧无法解释的间隙/填充

  18. 18

    python如何解释字符串宽度和零填充?

  19. 19

    用CGPattern填充MKPolygon时,多边形叠加层会相互干扰(使用Quartz 2D)

  20. 20

    用nil填充堆栈并将“ top”解释为最后一个非nil值有什么好处吗?

  21. 21

    用nil填充堆栈并将“ top”解释为最后一个非nil值有什么好处吗?

  22. 22

    引导程序。有人可以解释为什么我在图片的上方和下方进行填充吗?

  23. 23

    高于60 fps的requestAnimationFrame

  24. 24

    用requestAnimationFrame动画div

  25. 25

    在类中使用requestAnimationFrame

  26. 26

    requestAnimationFrame实现递归吗?

  27. 27

    requestAnimationFrame处理顺序

  28. 28

    控制敌人的速度RequestAnimationFrame

  29. 29

    JavaScript画布+ requestAnimationFrame口吃

热门标签

归档