callee属性: 该属性为一个指针,指向拥有这个arguments对象的函数,在实现递归时使用可以消除函数名与函数执行的耦合。 2. 函数柯里化:将接收多参数的函数f,通过逐步传参转化为一个只接收一个参数的函数f1,并且 f1 返回原来函数 f 计算结果。
function curryIt(fn) { return function a(arg1){ return function b(arg2){ return function c(arg3){ return fn(arg1,arg2,arg3); }; }; }; }递归法:
function curryIt(fn) { var len = fn.length; var args = []; function result(arg){ args.push(arg); len--; if(len>0){ return result; }else{ return fn.apply(this,args); } } return result; }