摘自《 Eloquent Javascript第三版》第5章。
我似乎在研究中找不到此构造'f()()',我想了解更多有关它的信息。
我希望能够使用
noisy(Math.min(3, 2, 1));
但是这样做时没有输出。
但是,本书示例可以按预期工作。但是如何?
书籍范例:
function noisy(f) {
return (...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);
最佳答案
noisy()
将函数作为参数(通过let result = f(...args);
行可以明显看出)。 Math.min(3, 2, 1)
解析为一个值,而不是函数,这就是为什么将其传递给noisy()
时不起作用的原因。f()()
的全部含义是函数f
返回一个函数,然后该函数本身将被执行。如果我们将其分解成这样,可能会更容易理解:
let g = f();
let result = g();
关于javascript - 为什么语法func1(func2)(parameters);工作,这叫什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58685123/