在Javascript中将参数传递给函数,但不声明它,它是如何工作的?

在Javascript中将参数传递给函数,但不声明它,它是如何工作的?,javascript,requestanimationframe,Javascript,Requestanimationframe,如果您没有太多时间,请告诉我“newTime”参数在下面的代码中从何处获得其值。 请看下面的代码以理解。我不明白这行:requestAnimationFrame(newTime=>animate(newTime,time))是如何工作的。参数“newTime”从未声明过,我们也不会手动将值传递给它。 当我试图理解不同的数组方法时,也会出现同样的问题,通常在函数中传递并使用一个参数,但我始终不知道参数的值。例如,这个代码段'array1.map(x=>x*2);。我们永远不会通过“x”,也永远不知

如果您没有太多时间,请告诉我“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);

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

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

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

这是一个箭头函数定义
newTime
是箭头函数的形式参数。调用函数时的实际值将是浏览器传递的时间戳,而不仅仅是“箭头函数魔术”;您对
requestAnimationFrame(animate)
也有同样的功能——它在这里调用
animate
函数,同时使用一个参数。我知道箭头函数。我来自C语言背景。只是不知道如果我们不声明newTime,也不手动传递newTime值,它是如何进入函数的,需要什么值?@MazharAli回调函数(箭头函数)传递给
requestAnimationFrame
的,由
requestAnimationFrame
内部调用,并在内部调用时传递参数。函数是中的一级对象JavaScript@MazharAli无论
requestAnimationFrame
传递给它什么(即执行回调时的时间戳,以毫秒为单位),我想问的是“newTime”的值是什么。它尚未声明,我们也不会手动将其传递给函数。任何其他带参数的函数都会传入一些值。不必查看
requestAnimationFrame
的源代码,我可以非常自信地告诉您,它将回调作为参数,并将变量传入该回调。该变量(在
requestAnimationFrame()
中创建和定义)是
newTime
是的,它将newTime作为变量传递给回调函数。但我不知道该变量的值是多少?假设他们不将该变量公开给任何共享范围的变量,或者不允许更多参数进入
requestAnimationFrame()
,那么如果不编辑source@MazharAli你看过吗