第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

急求?。。。?shí)現(xiàn)函數(shù)柯里化,最后返回柯里化函數(shù)的時(shí)候?yàn)槭裁床恍枰~外傳參?跪求!

急求!?。?!實(shí)現(xiàn)函數(shù)柯里化,最后返回柯里化函數(shù)的時(shí)候?yàn)槭裁床恍枰~外傳參?跪求!

紅糖糍粑 2019-10-31 09:36:37
在學(xué)習(xí)函數(shù)柯里化的時(shí)候看到這篇文章https://github.com/yygmind/bl...,作者的一個(gè)實(shí)現(xiàn)思路是這樣的:functioncurrying(fn,length){length=length||fn.length;//注釋1returnfunction(...args){//注釋2returnargs.length>=length//注釋3?fn.apply(this,args)//注釋4:currying(fn.bind(this,...args),length-args.length)//注釋5}}//Testconstfn=currying(function(a,b,c){console.log([a,b,c]);});fn("a","b","c")//["a","b","c"]fn("a","b")("c")//["a","b","c"]fn("a")("b")("c")//["a","b","c"]fn("a")("b","c")//["a","b","c"]底下有一個(gè)評論說,"可以不用在遞歸currying的時(shí)候傳入length-args.length,因?yàn)閎ind返回的函數(shù)的length已經(jīng)是length-args.length了",他給出的代碼是:functioncurrying(fn){returnfunction(...args){returnargs.length>=fn.length?fn.apply(this,args):currying(fn.bind(this,...args))}}為什么bind后返回的函數(shù)的形參個(gè)數(shù),即length剛好是length-args.length呢?這個(gè)length-args.length我的理解是計(jì)算還需要多少個(gè)參數(shù)才可以實(shí)際運(yùn)算fn,第一次遞歸后,currying的第二個(gè)參數(shù)就是這個(gè)差值,不再是函數(shù)形參個(gè)數(shù),之后拿這個(gè)差值與柯里化后的函數(shù)實(shí)際接受的參數(shù)數(shù)目比較,如果這個(gè)數(shù)目達(dá)到了差值,就不需要再遞歸了。而按照這個(gè)評論的說法,bind返回的函數(shù)的length就是length-args.length,因此不需要給遞歸的currying傳length-args.length,這是怎么看出來的?bind的第二個(gè)參數(shù)會在bind返回的函數(shù)實(shí)際執(zhí)行的時(shí)候傳遞給它,基于這一點(diǎn)我們才可以收集參數(shù),最后統(tǒng)一運(yùn)算,但是為什么bind返回的函數(shù)的length就剛好是length-args.length呢?
查看完整描述

2 回答

?
千萬里不及你

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊

function.prototype.bind
bind方法設(shè)置了返回的函數(shù)對象的length為(輸入的)fn.length-args.length
                            
查看完整回答
反對 回復(fù) 2019-10-31
?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊

bind的時(shí)候args展開的是實(shí)參,數(shù)量當(dāng)然就是傳入的實(shí)參數(shù)量。
這種寫法只適用于es6,es5以前還是需要第一種寫法。(雖然第一種寫法也用到了參數(shù)展開,但是可以很容易改寫成非展開的寫法,而第二種則依賴于展開操作的副作用)
                            
查看完整回答
反對 回復(fù) 2019-10-31
  • 2 回答
  • 0 關(guān)注
  • 270 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號