個(gè)人筆記宿接,理解錯(cuò)了也請(qǐng)?jiān)彙?/p>
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
是一個(gè)函數(shù)式編程的庫(kù)
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)在我們?cè)賮?lái)理解一下:
filter(haveSpace)(["abcdefg", "Hello World"])
分開操作一下鄙陡,先執(zhí)行 filter(haveSpace)
得到一個(gè)函數(shù)闯狱,我們賦值給func1:
var func1 = function (arr) {
return arr.filter(haveSpace)
}
繼續(xù)執(zhí)行洽沟,不就是相當(dāng)于:
arr = ["abcdefg", "Hello World"]
func1(arr)
func1(arr)
返回的不就是一個(gè)filter方法攘宙,我們給他傳進(jìn)去一個(gè)函數(shù)丈莺,如下
arr = ["abcdefg", "Hello World"]
haveSpace = function (str) {
return str.match(/\s+/g)
}
arr.filter(haveSpace)