在 javascript 中我们可以调用下面提到的函数吗?如果是这样,其背后的逻辑是什么?
var pro = function(a){
...
}
pro(5)(3);
最佳答案
var pro = function(a) { return function(b) { return a * b; } };
console.log(pro(5)(3)); // 15
基本上,如果一个函数的返回值本身就是一个函数,那么您可以转身并立即在同一个表达式中调用返回的函数;这就是那个语法的意思。您还可以使用中间变量:
var times5 = pro(5);
console.log(times5(3)); // 15
在上面的例子中,结果和你像这样直接定义 times5
是一样的:
function times5(b) { return 5 * b; }
函数返回函数有很多应用;通常,在传递给其他函数等的表达式中使用函数作为常规值称为 Higher-order programming .作为 Javascript 中的一个实际问题,在动态创建网页元素或将网页元素与操作函数相关联时,您经常必须这样做;调用返回函数的函数可以确保每个函数都有自己唯一的变量,避免由于 var
作用域的限制而发生的重用。
在其他一些语言中,当您向函数传递的参数太少时,它会自动返回另一个函数,该函数将在传递其余参数时完成工作。这叫做 currying在 Haskell Curry 之后,并在 the language given his other name ,这实际上是编写多参数函数的唯一方法:编写一个返回函数的函数,该函数返回一个函数...接受最后一个参数并返回结果。
关于javascript - 在 javascript 中,我们可以调用一个函数作为 functionName(5)(3); 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29254038/