我正在尝试使用这两个调用函数:
func(1)(2); // 3
func(1, 2); // 3;
我正在尝试做什么:
function func(x, y) {
return (function(y) {
return x + y;
}(y));
}
但是当我尝试顺序调用时,这根本不起作用。还有其他方法可以实现吗?
function add(x, y) {
if (y) return x + y;
return function(y) {
return x + y;
};
}
这可行,但我认为这可能是更好的解决方案。
感谢。
答案 0 :(得分:0)
您正在寻找的是currying,这是您可以做到的。
function add(a, b){
if(typeof b !== 'undefined'){
return a + b;
}else{
return function(c){
return a + c;
}
}
}
console.log(add(2, 3));
console.log(add(2)(3));
同时查看此答案How to Write a function where the output for both “sum(2,3)” and “sum(2)(3)” will be 5
答案 1 :(得分:0)
这是没有理由这样做的,IMO,你有一个函数func(1, 2)
,如果你想currify
,只需用curry
包装它,如果你使用{{} 1}},你可以使用lodash
来修改一个函数,使你的函数干净