// 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 關注
- 843 瀏覽
添加回答
舉報
0/150
提交
取消