var f = function(x,y,z){return x*(y-z);};
f(2,3,4) == partialLeft(f,2)(3,4) ; function array(a,n){return Array.prototype.slice.call(a,n||0);} function partialLeft(f){ var args = arguments; console.debug('array(arguments): ' + array(arguments)); return function(){ var a = array(args,1); console.debug ('a: '+a); a = a.concat(array(arguments));//连接两个数组 console.debug('array(arguments): ' + array(arguments)); console.debug ('a: '+a); return f.apply(this,a); }; console.debug('leaving partialLeft'); } console.debug('getting c'); var c = partialLeft(f,2); console.debug('c: '+c); c(3,4);