在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; }
函数返回函数有很多应用。通常,在表达式中使用函数作为正则值并传递给其他函数,依此类推,称为高阶编程。在Javascript中,作为一个实际问题,在动态创建网页元素或将其与动作函数相关联时,通常必须这样做。调用函数返回函数可以确保每个函数都有自己的唯一变量,避免了由于var
范围限制而导致的重用。
在某些其他语言中,当您向函数传递的参数太少时,它将自动返回另一个函数,该函数将在传递其余参数时完成工作。在Haskell Curry之后,这被称为currying,在使用他的其他名字的语言中,这实际上是编写具有多个参数的函数的唯一方法:编写返回函数的函数,该函数返回一个函数……需要最后一个参数,并且返回结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句