Higher Order Function 、Closure 與 IIFE 三者常同時使用,可讓 Codebase 更為精簡。
Version
ECMAScript 2020
Higher Order Function && Closure
let _inc = () => {
let count = 0
return () => count++
}
let inc = _inc()
inc() // ?
inc() // ?
inc() // ?
只所以想使用 higher order function 回傳新 function,常常是為了使用 closure 將 variable 保存下來。
IIFE
let inc = (count => () => count++)(0)
inc() // ?
inc() // ?
inc() // ?
這類 higher order function 常只使用一次而已,剛好適合使用 IIFE。
Conclusion
- 當使用 higher order function 搭配 closure 時,可思考是否能用 IIFE 讓 codebase 更精簡