Javascript 为我从未给出的参数创建变量名的函数

Javascript 为我从未给出的参数创建变量名的函数,javascript,function,arguments,Javascript,Function,Arguments,我正在从一本雄辩的书中学习JavaScript,在关于高阶函数的章节中,我发现了以下代码: function noisy(f) { return function(...args) => { console.log("calling with", args); let result = f(...args); console.log("called with", args, "returned", re

我正在从一本雄辩的书中学习JavaScript,在关于高阶函数的章节中,我发现了以下代码:

function noisy(f) {
  return function(...args) => {
    console.log("calling with", args);
    let result = f(...args);
    console.log("called with", args, "returned", result);
    return result;
  };
}

noisy(Math.min)(3,2,1);
// calling with [3,2,1]
// called with [3,2,1] returned 1
我知道rest参数
…args
接受许多参数并将它们分组到一个数组中,但是我什么时候给了arrow函数任何参数?
args
是否自动包含传递给
noised()
(只需要
f
)的所有额外参数?
如果是,这种使用参数的方法有哪些规则?
我可以只使用前两个额外参数吗?
原始代码不应该如下所示吗

function noisy(f, ...args) {
    return function(args) => { // with the rest of the program
我什么时候给了arrow函数任何参数

您在
noise(Math.min)(3,2,1)
(3,2,1)
部分传递了它们
noised()
返回一个函数,然后立即使用参数调用该函数
(3,2,1)

打电话可能更清楚

var myArrowFunction=noised(Math.min)
MyArrow函数(3,2,1)

此示例显示了高阶函数的两个方面;能够将函数作为参数传递(传递
Math.min
)以及能够将函数作为结果返回(返回箭头函数)我需要习惯返回的函数。感谢您的解释,我刚刚注意到(1,2,3)不是
嘈杂的
的参数,但无论如何,最棘手的部分是确认
noised
返回一个函数,而不是返回函数的返回值。