先看一下代码
1 function add(){ 2 var sum=0; 3 for(var i=0;i<arguments.length;i++){ 4 sum+=arguments[i]; 5 } 6 return sum; 7 } 8 function bigAdd(fn){ 9 //获取除了第一个参数外的其他参数(这里是除了fn) 10 var args=[].slice.call(arguments,1); 11 return function(){ 12 var innerArgs=args.concat([].slice.call(arguments)); 13 return fn.apply(null,innerArgs); 14 } 15 } 16 17 var n=bigAdd(add,2,3,4,5)(100,100,100,100); 18 console.log(n);
柯里化的原理如上.具体有什么用途,我目前没用到,但是感觉有一天用到的话,这种方式也是很灵活的.