以不同格式获取参数的javascript函数

Tam*_*mil 3 javascript

最近我被要求写一个javascript函数(这是一个编码测试),他们希望我实现一个函数,它将添加和返回值.

add(3,2);//should return 5
add(3)(2); //should return 5
Run Code Online (Sandbox Code Playgroud)

我不确定这是否可行.我不是javascript的专家,所以可以从谷歌搜索获得任何线索.

Ja͢*_*͢ck 5

您必须先检查第二个参数是否先给出; 如果是,立即返回结果; 否则,返回一个将完成添加的函数:

function add(a, b)
{
    if (typeof b == 'undefined') {
        return function(b) {
            return a + b;
        }
    } else {
        return a + b;
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您不喜欢重复的逻辑:

function add(a, b)
{
    var f = function(b) {
        return a + b;
    };

    return typeof b == 'undefined' ? f : f(b);
}
Run Code Online (Sandbox Code Playgroud)

这也称为部分功能应用或currying.