// 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 = [];//设定数组args2for (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);//看不懂。。最后返回得到的是什么。。函数功能是什么?};}//如果能帮忙放在一个具体环境下解说就更好了,,谢谢~~
2 回答
狐的传说
TA贡献1804条经验 获得超3个赞
你主要没有调用过,调用一次就明白了,假设一个方法需要多个参数,但是参数不全,那就返回一个方法,在这个方法里面在传递剩余参数。假设fn是这样的function(a,b){
alert(a+b);
}
一开始这么调用 var _t=curry(fn,this,"c"),这里返回的就是一个方法,
之后这么调用 _t('d'),这样就相当于当用fn("c","d"),
- 2 回答
- 0 关注
- 776 浏览
添加回答
举报
0/150
提交
取消