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

时间:2014-08-22 06:50:51

标签: javascript

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

add(3,2);//should return 5
add(3)(2); //should return 5

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

2 个答案:

答案 0 :(得分:5)

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

function add(a, b)
{
    if (typeof b == 'undefined') {
        return function(b) {
            return a + b;
        }
    } else {
        return a + b;
    }
}

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

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

    return typeof b == 'undefined' ? f : f(b);
}

这也称为partial function application或currying。

答案 1 :(得分:0)

解决方案对于add(x,y):

function add(x, y) {
    return x + y
}

解决方案对于add(x)(y):

function add(x) {
  return function(y){
    return x+y;
  }
}