javascript - 我不明白这个 javascript 函数调用以及它会在哪里使用

标签 javascript function

有人向我展示了一些我不熟悉的东西,我真的很想了解人们会如何以及为什么会这样做:

假设我们有一个名为 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/

相关文章:

javascript - 无法升级到 Node 版本 0.10.35 以上

javascript - TypeError : _co. 帖子未定义

javascript - python函数可以像javascript一样在html中运行吗?

javascript - 在自执行函数中访问阴影变量

javascript - 我如何处理参数数组以避免出现未定义的错误?

c - 为什么 int (*p)[] 不能用作 C 函数的参数?

javascript - 在dimple.js中自定义圆环图的工具提示

javascript - 将一条记录中的数量(数量)打散,设置为数组,供选项选择

javascript - 调用数组中函数中的函数

python-3.x - 打印_的刽子手游戏问题???逻辑问题,我想