有人向我展示了一些我不熟悉的东西,我真的很想了解人们会如何以及为什么会这样做:
假设我们有一个名为 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
,它会返回一个新函数,该函数调用自身并将第一个参数绑定(bind)到它已知的参数。以后对该返回函数的调用只需要第二个参数,在此处的示例中作为 c
传递。
以这种方式使用柯里化(Currying)函数意味着您可以创建对函数的引用以执行特定功能,例如:
var add5 = myfunc(5);
console.log(add5(6)); //11
只是在您的原始帖子中,您立即调用柯里化(Currying)函数,而不是将对它的引用存储在变量中。
关于javascript - 我不明白这个 javascript 函数调用以及它会在哪里使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29897402/