将参数传递给Javascript函数但未声明,它如何工作?

时间:2018-07-28 16:32:09

标签: javascript requestanimationframe

如果您没有太多时间,请告诉我'newTime'参数在以下代码中从何处获取其值。 查看下面的代码以了解。我不了解requestAnimationFrame(newTime => animate(newTime,time))行的工作方式。参数'newTime'从未被声明过,我们也不会手动将值传递给它。 当我尝试理解不同的数组方法时,会发生相同的问题,通常在函数内部传递并使用参数,但是参数的值对我而言始终是未知的。例如,此代码段`array1.map(x => x * 2);。我们永远不会通过“ x”,我们永远不会知道它的值。

代码如下:

    let cat = document.querySelector("img");
    let angle = Math.PI / 2;
    function animate(time, lastTime) {
    if (lastTime != null) {
    angle += (time - lastTime) * 0.001;
    }
    cat.style.top = (Math.sin(angle) * 20) + "px";
    cat.style.left = (Math.cos(angle) * 200) + "px";
    requestAnimationFrame(newTime => animate(newTime, time));
   }
   requestAnimationFrame(animate);

1 个答案:

答案 0 :(得分:0)

您看到的是es6匿名函数(某些语言称为这些lambda函数)声明。 newTime只是该匿名函数的命名参数。

requestAnimationFrame(newTime => animate(newTime, time));

相同
requestAnimationFrame(function(newTime){
    animate(newTime, time);
});