JavaScriptの純粋関数とは何か?[30seconds of interviews]

純粋関数とは何か?

純粋関数(pure function)とは、これら2つの条件を満たす関数を指す。

  • 同じ入力が与えられると、その関数は同じ出力を返す。
  • 関数は、その関数のスコープにおいて副作用を起こさない。

純粋関数は、上記の2つの条件を満たす限り、関数内のローカルデータを変更することができる。

Pure

const a = (x, y) => x + y
const b = (arr, value) => arr.concat(value)
const c = arr => [...arr].sort((a, b) => a - b)

Impure

const a = (x, y) => x + y + Math.random()
const b = (arr, value) => (arr.push(value), arr)
  • tips
    • 純粋関数は、その信頼性のため推測が用意にできる。
    • 全ての関数は、明示的に副作用を起こさない限り純粋関数であるべきである。
    • もし関数が値を返さないのであれば、すなわち副作用が起こることを示している。

30secondsofinterviews.org