我试图写一个可以用两种方式调用的函数:
sum(3,5); //8
OR
sum(3)(5); //8
这显然不够:
function sum (a,b){
return a + b;
}
这是我到目前为止的地方:
答案 0 :(得分:5)
您可以这样做:
UIBarButtoItem
答案 1 :(得分:3)
为什么放在一边(你为什么要这样做? - ans:homework)
function sum (a,b){
if(b === undefined)
{
return function summer(next){
return a + next;
}
}
return a + b;
}
Upadted fiddle:http://jsfiddle.net/a8tds42d/2/
答案 2 :(得分:2)
正如另一种选择:
function sum (a,b) {
if (b === undefined) {
return sum.bind(null, a);
}
return a + b;
}
使用bind来制作咖喱。
答案 3 :(得分:1)
你需要的是写一个咖喱功能。 Kevin Ennis详细介绍了如何在这里实施一个。
https://medium.com/@kevincennis/currying-in-javascript-c66080543528
这里是上述帖子的功能(以防帖子消失)
function curry( fn ) {
var arity = fn.length;
return (function resolver() {
var memory = Array.prototype.slice.call( arguments );
return function() {
var local = memory.slice(), next;
Array.prototype.push.apply( local, arguments );
next = local.length >= arity ? fn : resolver;
return next.apply( null, local );
};
}());
}
或者你可以使用Ramda.js和这里使用Ramda