我正在阅读《JavaScript编程精解》这本书。
在第五章中,作者描述了一种特殊的高阶函数。它被称为noisy()
,如下所示...
function noisy(f) {
return (...args) => {
console.log("calling with", args);
let result = f(...args);
console.log("called with", args, ", returned", result);
return result;
};
}
这里让我感到困惑的部分是,他按以下方式调用函数noisy
...
noisy(Math.min)(3,2,1);
我不理解为什么这个函数被称为那样。为什么不叫做这个...
noisy(Math.Min(3,2,1))
编辑:我现在明白了发生了什么。Simone已经解释了。
noisy(Math.min)(3,2,1) is equivalent to (noisy(Math.min))(3,2,1).
noisy
接受一个函数并返回一个调用传递函数的函数。 - pishpishnoisy
的目的是在调用传递给它的函数 (f
) 时制造一些(嗯...)噪音。因此,在调用noisy(Math.min)
后,您将获得一个函数,然后使用(3,2,1)
参数调用该函数。本质上,这是为了在实际调用f
之前和之后记录到控制台而装饰(或“代理”)对f
的调用。 - haim770