JavaScript 函數(shù)式編程簡介
一踪蹬、案例
- 案例一
function splat (fun) {
return function(array) {
return fun.apply(null, array)
}
}
var addEleFun = splat(function (x, y) {
return x + y
})
addEleFun([1, 2]) // 3
個人理解
通過這樣寫的一大好處是行為與結(jié)果分步進行搀暑,更好的解耦假褪、組合
- 案例二
function unsplat(fun) {
return function() {
return fun.call(null. _.toArray(arguments))
}
}
var joinEle = unsplat(function(array) {
return array.join(' ')
})
joinEle('1', '$', '&')
// 1 $ &
注:apply
將參數(shù)放到數(shù)組中調(diào)用,call
與方法參數(shù)一樣
二杂抽、開始函數(shù)式編程
函數(shù)式初始
-
existy
函數(shù)诈唬,主要用于null
與undefined
值判斷,注意使用的是!=
不是!==
function existy(x) {
return x != null
}
existy(null) // false
existy(undefined) // false
existy(0) // true
existy(false) // true
關(guān)于 null >= 0
的討論請參考 Franky 大大的 從 null >= 0 說起
-
truthy
函數(shù)默怨,用于真
值判斷讯榕,主要為false
、null
匙睹、undefined
三個值愚屁, 如果希望數(shù)字0
也為假
值,請不要用這個方法
function truthy(x) {
return x !== false && existy(x)
}
truthy(0) // true
truthy(false) // false
truthy(undefined) // false
truthy(null) // false
加速
- 靜態(tài)分析器
- 谷歌的閉包編譯器(Goggle's Closure compiler)
三痕檬、總結(jié)
- 確定抽象霎槐,并為其構(gòu)建函數(shù)
- 利用已有的函數(shù)來構(gòu)建更為復(fù)雜的抽象
- 通過將現(xiàn)有的函數(shù)傳給其他的函數(shù)來構(gòu)建更加復(fù)雜的抽象
相關(guān)文檔
- microjs.com github
- microjs.com 一些有趣的javascript庫