最近我被要求写一个JavaScript函数(这是一项编程测试),他们希望我实现一个函数,它可以添加并返回值。
add(3,2);//should return 5
add(3)(2); //should return 5
我不确定这是否有可能。我不是javascript专家,所以无法从谷歌搜索中得到任何线索。
最近我被要求写一个JavaScript函数(这是一项编程测试),他们希望我实现一个函数,它可以添加并返回值。
add(3,2);//should return 5
add(3)(2); //should return 5
我不确定这是否有可能。我不是javascript专家,所以无法从谷歌搜索中得到任何线索。
您需要先检查是否提供了第二个参数;如果是,则立即返回结果;否则,返回一个完成加法的函数:
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);
}
这也被称为 偏函数应用 或柯里化。
add(x,y)的解决方案:
function add(x, y) {
return x + y
}
add(x)(y)的解决方案:
function add(x) {
return function(y){
return x+y;
}
}
柯里化(currying)
。可以在这里查看更多信息和这里。在我看来,JS框架中最好的例子就是这个(仅供参考)。 - Kiril