為了讓 Function 的可讀性更佳,我們會在 Function 內建立 Local Variable,亦可使用 IIFE 與 Arrow Function 的 Parameter 取代。
Version
ECMAScript 2015
Function
let f = x => y => {
if (x - y > 0) return x - y
else return 0
}
f(3)(1) // ?
f(1)(3) // ?
我們發現若對 x - y 建立 local variable 將有助於 function 可讀性。

Local Variable
let f = x => y => {
let z = x - y
if (z > 0) return z
else return 0
}
f(3)(1) // ?
f(1)(3) // ?
第 2 行
let z = x - y
對 x - y 建立 local variable z 有助於可讀性。

let f = x => y => {
let z = x - y
return z > 0 ? z : 0
}
f(3)(1) // ?
f(1)(3) // ?
亦可改用 ?: 以 expression 表示。
但可發現使用 let 使得 f() 需以多行呈現,儘管使用了 ?: 也不能展現 expression 精神。

IIFE
let f = x => y => (z => z > 0 ? z : 0)(x - y)
f(3)(1) // ?
f(1)(3) // ?
可將 z 以 arrow function 的 parameter z 呈現,x - y 則以 argument 傳入,如此 f() 只需一行即可,展現 expression 精神。

Conclusion
- IIFE 其實尚有不少應用待探索,將 local variable 改放在 arrow funtion 的 parameter 配合 IIFE 是不錯的應用