繁体   English   中英

我不明白这个javascript函数调用以及它将在何处使用

[英]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.

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