js中關(guān)于柯里化(lodash)的理解

個人筆記,理解錯了也請原諒~

import { curry } from 'lodash';
    
var match = curry((reg, str) => str.match(reg));
var filter = curry((f, arr) => arr.filter(f));
var haveSpace = match(/\s+/g);
    
filter(haveSpace)(["abcdefg", "Hello World"])

lodash是一個函數(shù)式編程的庫

var match = curry((reg, str) => str.match(reg));

我們可以理解為

var match = function (reg) {
    return function (str) {
        return str.match(reg)
    }
}

var filter = curry((f, arr) => arr.filter(f));

我們理解為:

var filter = function (f) {
    return function (arr) {
        return arr.filter(f)
    }
}

var haveSpace = match(/\s+/g);

我們理解為:

function (str) {
        return str.match(/\s+/g)
    }

那么,現(xiàn)在我們再來理解一下:

filter(haveSpace)(["abcdefg", "Hello World"])

分開操作一下,先執(zhí)行 filter(haveSpace)
得到一個函數(shù),我們賦值給func1:

var func1 = function (arr) {
    return arr.filter(haveSpace)
}

繼續(xù)執(zhí)行,不就是相當于:

arr = ["abcdefg", "Hello World"]
func1(arr)

func1(arr) 返回的不就是一個filter方法,我們給他傳進去一個函數(shù),如下

arr = ["abcdefg", "Hello World"]

haveSpace = function (str) {
        return str.match(/\s+/g)
    }
    
arr.filter(haveSpace)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容