函数柯里化sum(1)(2,3)(4,5,6)

2,793 阅读1分钟
function sum(){
    let arr = [].slice.call(arguments);
    let fn = function(){
    	let arr2 = [].slice.call(arguments);
        return sum.apply(null,arr.concat(arr2));
    }
    
    fn.toString = function(){
    	return arr.reduce((v,n) => v+n);
    }
    
    return fn;
}
sum(1)(2,3)(4,5,6) // f 21