繁体   English   中英

在javascript中,我们可以将函数调用为functionName(5)(3);吗?

[英]In javascript can we invoke a function as functionName(5)(3);?

在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 ,在用他的其他名字命名的语言中 ,这实际上是编写具有多个参数的函数的唯一方法:编写返回函数的函数,该函数返回一个函数……需要最后一个参数,并且返回结果。

如果pro(5)返回一个函数,则为是。

如果没有,那么您将得到一个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM