這篇文章給大家分享的是有關(guān)JavaScript如何實(shí)現(xiàn)函數(shù)柯里化的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供汕城企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、網(wǎng)站建設(shè)、HTML5、小程序制作等業(yè)務(wù)。10年已為汕城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
// 函數(shù)柯里化指的是一種將使用多個參數(shù)的一個函數(shù)轉(zhuǎn)換成一系列使用一個參數(shù)的函數(shù)的技術(shù)。function curry(fn, args) { // 獲取函數(shù)需要的參數(shù)長度 let length = fn.length; args = args || []; return function() { let subArgs = args.slice(0); // 拼接得到現(xiàn)有的所有參數(shù) for (let i = 0; i < arguments.length; i++) { subArgs.push(arguments[i]); } // 判斷參數(shù)的長度是否已經(jīng)滿足函數(shù)所需參數(shù)的長度 if (subArgs.length >= length) { // 如果滿足,執(zhí)行函數(shù) return fn.apply(this, subArgs); } else { // 如果不滿足,遞歸返回科里化的函數(shù),等待參數(shù)的傳入 return curry.call(this, fn, subArgs); } };}// es6 實(shí)現(xiàn)function curry(fn, ...args) { return fn.length <= args.length ? fn(...args) : curry.bind(null, fn, ...args);}
感謝各位的閱讀!關(guān)于“JavaScript如何實(shí)現(xiàn)函數(shù)柯里化”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!