- 将函数的arguments转为数组
function f(){
//arg数组中有除函数第一个参数之外的其余参数
var arg = Array.prototype.slice.call(arguments, 1);
}
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;
}