最近我被要求编写一个javascript函数(这是一个编码测试),他们希望我实现一个函数来添加和返回值。
add(3,2);//should return 5
add(3)(2); //should return 5
我不确定这是否可行。我不是javascript的专家,所以可以从谷歌搜索获得任何线索。
答案 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;
}
}