mrm*_*ick 4 javascript function
我被告知了一些我不熟悉的东西,我真的很想知道如何以及为什么会这样做:
假设我们有一个名为myfunc的函数,它可以用两种方法之一调用并返回相同的值(比如简单地添加整数):
myfunc(1,2)
myfunc(1)(2)
Run Code Online (Sandbox Code Playgroud)
我看了一遍,找不到第二个电话的任何例子.我的理解是函数可以返回一个函数对象(可能定义为闭包或lambda?),然后作为参数传递?
这被称为currying.在您的示例中,该函数可能如下所示:
function myfunc(a, b) {
if (b === undefined || b === null)
return function(c) { return myfunc(a, c) }
return a + b;
}
Run Code Online (Sandbox Code Playgroud)
本质上,如果b没有传递参数,它会返回一个新函数,该函数调用自身,第一个参数绑定到它已经知道的参数.对返回函数的未来调用只需要第二个参数,该参数c在此处的示例中传递.
以这种方式使用curried函数意味着您可以创建对函数的引用以执行特定功能,例如:
var add5 = myfunc(5);
console.log(add5(6)); //11
Run Code Online (Sandbox Code Playgroud)
就在您原来的帖子中,您立即调用curried函数,而不在变量中存储对它的引用.