我正在读《Eloquent JavaScript》这本书。
在第 5 章中,他描述了一个特定的高阶函数。它被称为 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
类型,您将得到:
typeof noisy
>> "function"
如果您询问 noisy(Math.min)
的类型,也会得到同样的结果:
typeof noisy(Math.min)
>> "function"
如果您愿意,还可以将此函数存储到变量中:
const noisyFunction = noisy(Math.min)
这样你就可以像常规函数一样调用它:
noisyFunction(1,2,3)
noisy(Math.min)(3,2,1)
完全相同,只是以不同的、更短的方式编写。要点是,高阶函数只是一个返回函数的函数。
关于javascript - 有人可以解释一下这个高阶 JavaScript 函数令人困惑的语法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50003830/