點燈坊

失くすものさえない今が強くなるチャンスよ

Higher Order Function、Closure 與 IIFE

Sam Xiao's Avatar 2020-11-22

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 保存下來。

closure000

IIFE

let inc = (count => () => count++)(0)

inc() // ?
inc() // ?
inc() // ?

這類 higher order function 常只使用一次而已,剛好適合使用 IIFE。

closure001

Conclusion

  • 當使用 higher order function 搭配 closure 時,可思考是否能用 IIFE 讓 codebase 更精簡