暗黙的なインプットとアウトプットのない関数実行
値オブジェクトをイミュータブルにすることに異論はない。5.plus(1)をすることで5が6になるようでは困るだろう。値の操作は常に新しい値を返却すべきというのは分かる。 functionをcalculationとactionに分けるとき、calculationには暗黙的なインプットと暗黙的なアウトプットがないとされる。グローバル変数へのアクセスは暗黙的なインプットまたはアウトプットに該当する。つまり、calculationはインプットを引数で受けて、アウトプットを戻り値で渡す、ということになる。 code:javascript
function addItem(cart, item) { // 引数でcartを受ける
let newCart = cart.slice() // copy
newCart.push(item)
return newCart // 戻り値でcopyを返す
}