如何在JavaScript中调用返回另一个函数的函数
通过引用函数的名称并在后面添加括号来调用函数。如果我们调用的函数返回另一个函数(在我们的例子中是这样的),我们需要将其赋值给一个变量或立即调用它。在将来,我们需要确保我们理解返回的函数的行为以及如何在我们的代码中使用它。这被称为函数柯里化。
函数柯里化
- 函数柯里化 是一种在 函数式编程 中的技术,将一个函数转换为一系列函数,每个函数接受一个参数。
-
这允许对函数的参数进行部分应用,并可以简化函数组合。
-
它是以逻辑学家Haskell Curry命名的。
-
在JavaScript中,可以使用
curry
函数来柯里化给定的函数。
方法
在JavaScript中,您可以通过首先将返回的函数分配给一个变量,然后使用变量名称后跟括号来调用返回另一个函数的函数。
示例
let outerFunction = function() {
return function() {
console.log("Inner function");
}
}
let innerFunction = outerFunction();
innerFunction(); // "Inner function"
输出
Inner function
您还可以通过在外部函数调用后添加括号,立即调用内部函数,像这样 –
outerFunction()(); // "Inner function"
也可以使用箭头函数代替普通函数:
let outerFunction = () => () => console.log("Inner function");
let innerFunction = outerFunction();
innerFunction(); // "Inner function"
输出
Inner function
或者
outerFunction()(); // "Inner function"
都会给出相同的结果
最终代码
这是一个调用在JavaScript中返回另一个函数的函数的示例 –
// A function that returns another function
function createMultiplier(x) {
return function(y) {
return x * y;
};
}
// Call the createMultiplier function and assign the returned function to a variable
let double = createMultiplier(2);
// Use the returned function to perform a calculation
console.log(double(5)); // Output: 10
解释
- createMultiplier 函数接受一个参数x,并返回一个新的函数。返回的函数接受一个参数y,并返回x和y的乘积。
-
我们调用 createMultiplier 函数,并将值2作为参数传递,将返回的函数赋给变量double。
-
现在double变量是一个函数,接受一个参数y,并返回x*y,其中x为2。
-
我们调用double(5),将返回2*5 = 10。
在这个例子中, createMultiplier
是一个高阶函数,因为它返回一个函数。返回的函数被称为闭包,因为它记住了外部函数作用域中的x的值。
输出
10