JS 函数科里化。不明白。具体问题在这?

// JavaScript Document
//在书上看到函数科里化,感觉看的一头雾水,求帮忙
//复制到DW上会比较好看
function curry (fn,scope){
var scope = scope||window;//变量scope是什么作用,作用域吗?
var args =[];//设定数组 args(实参)
for(var i =2,len=arguments.length; i<len; ++i){
args.push(arguments[i])
};//是否是将接受的实参arguments历遍,压入数组args中?那么为什么要从i=2开始?
return function(){
var args2 = [];//设定数组args2
for (var i = 0 ;i<arguments.length;i++){
args2.push(argument[i]);
}//实参argument历遍,压入数组args中,为什么这里又是从i=0开始和上面不同?
var argstotal = args.concat(args2);//将所有实参压入到一个argstotal数组里
return fn.apply(scope,argstotal);//看不懂。。最后返回得到的是什么。。函数功能是什么?
};
}
//如果能帮忙放在一个具体环境下解说就更好了,,谢谢~~

大话西游666
浏览 734回答 2
2回答

狐的传说

你主要没有调用过,调用一次就明白了,假设一个方法需要多个参数,但是参数不全,那就返回一个方法,在这个方法里面在传递剩余参数。假设fn是这样的function(a,b){alert(a+b);}一开始这么调用 var _t=curry(fn,this,"c"),这里返回的就是一个方法,之后这么调用 _t('d'),这样就相当于当用fn("c","d"),
打开App,查看更多内容
随时随地看视频慕课网APP