副作用のない関数

実践JavaScript / 全 5

実践JavaScript - 副作用のない関数

渡した配列が書き換わってしまう

関数に配列を渡すと、中身のオブジェクトは呼んだ側と同じものです。関数の中でその場で書き換えると、戻り値を受け取ったつもりが元の変数まで変わります。

コピーしたつもりで同じものを指している、というのがこの事故の中身です。次の図解で箱と矢印の数を数えます。

result を見ているつもりが、元の works の中身まで 440 になっています。

const works = [{ title: "家計簿アプリ", views: 340 }]; function boost(list) { list[0].views += 100; return list; } const result = boost(works); console.log(works[0].views); // 440

1 / 5

このスライドが付いているレッスンを開く