[英]I don't understand this javascript function call and where it would be used
我被告知了一些我不熟悉的东西,我真的很想知道如何以及为什么会这样做:
假设我们有一个名为myfunc的函数,它可以用两种方法之一调用并返回相同的值(比如简单地添加整数):
myfunc(1,2)
myfunc(1)(2)
我看了一遍,找不到第二个电话的任何例子。 我的理解是函数可以返回一个函数对象(可能定义为闭包或lambda?),然后作为参数传递?
这被称为currying。 在您的示例中,该函数可能如下所示:
function myfunc(a, b) {
if (b === undefined || b === null)
return function(c) { return myfunc(a, c) }
return a + b;
}
本质上,如果没有传递参数b
,它会返回一个新函数,该函数调用自身,第一个参数绑定到它已经知道的参数。 对返回函数的未来调用只需要第二个参数,在这里的示例中将其作为c
传递。
以这种方式使用curried函数意味着您可以创建对函数的引用以执行特定功能,例如:
var add5 = myfunc(5);
console.log(add5(6)); //11
就在您原来的帖子中,您立即调用curried函数,而不在变量中存储对它的引用。
如果你在Javascript中理解了很好的功能,这很容易。
尝试这个 :
console.log(typeof myfunc(1)); // return : 'function'
所以:你可以做到这一点(更具可读性)
var result = myfunc(1);
result(2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.