関数(純粋関数, 再帰関数, 高階関数, クロージャー)
最終更新日:

一歩進んだ関数の使い方について解説します。「再利用しやすい関数」「処理を自由に変更できる関数」を作るために、必要な知識となります。

なお、関数の基本的な記述方法は こちら にて取り上げています。

純粋関数

純粋関数と呼ばれる関数が存在します。純粋関数には、以下特徴があります。

  • プログラムの状態を変えない。
    • グローバル変数の状態
    • DOMの状態
    • 画面出力の状態
    • DBの状態
  • 同じ入力に対して、同じ出力を返す。

純粋関数のメリットは以下の通りです。

  • テストしやすい
  • 再利用性が高い

純粋な関数不純な関数 を意識して、なるべく純粋関数が増えるような実装を心がけることが勧められています。

再帰関数

関数内で自分自身の関数を呼び出す関数再帰関数と呼びます。

以下、階乗を計算する関数を再帰関数を利用して実装した例になります。

factorial = num => {
  if (num < 0) {
    return -1
  } else if (num == 0) {
    return 1
  } else {
    return (num * factorial(num - 1))
  }
}

console.log(factorial(-10))  // -1
console.log(factorial(0))    // 1
console.log(factorial(4))    // 24

高階関数

他の関数を引数として受け取れる関数高階関数 と呼びます。

ope = (x, y, cb) => {
  return cb(x, y)
}

console.log(ope(2, 4, (a, b) => a + b))  // 6
console.log(ope(2, 4, (a, b) => a * b))  // 8

上記例では、第3引数に指定する関数によって処理内容が変わっています。

このように、高階関数 を利用すると処理を自由にカスタマイズできるメリットがあります。

cb に指定する関数は、後から呼び出される関数になるので コールバック関数 と呼びます。

(a, b) => a + b のように名前の無い関数を 無名関数 と呼びます。
今回のように、使い捨ての関数は無名関数にするとコードがシンプルになります。

クロージャー

関数内のローカル変数は、関数の処理終了後に破棄されます。これを維持するための仕組みがクロージャーです。

clousure = () => {
  let x = 1
  return function () {
    return x++
  }
}
var f = clousure()
console.log(f())  // 1
console.log(f())  // 2
console.log(f())  // 3

「ローカル変数を参照している関数」を返す関数を定義してますが、これがクロージャになります。

「clousure関数のローカル変数を参照している無名関数」が「f関数」に格納され続けているため「f関数」がローカル変数を維持し続けています。

クロージャーの仕組みは、プライベート変数を作るのに利用されます。

【エンジニア向け】仕事を見つける方法

転職する

転職エージェントを活用する

転職サイトの場合、自身でサイト上から企業を探す必要があります。 一方「レバテックキャリア」 などの転職エージェントの場合、エージェントが企業を紹介してくれます。エージェントが間に入ることにより、日程調整や、条件交渉などもサポートしてくれます。

転職ドラフトを活用する

転職ドラフト」は、 企業がITエンジニアをドラフトという形で指名するサービスです。年収が最初に提示されるなどのメリットがあります。 ただ、初回登録時にレジュメ作成が必要で、すでにエンジニア経験が豊富にあるエンジニア向けのサービスかと思います。 レジュメ作成が手間ですが、自身のキャリアを見直す機会になり、他の仕事探しにも役立つはずです。

エンジニア転職保証のあるスクールを活用する

ある程度、開発経験のあるかたであれば、独学で必要なスキルを身につけることができるはずです。ただ、別業種からエンジニアに転職したい場合など、1から独学で学ぶのはハードルが高いです。そういった方は、スクールの活用を検討しても良いと思います。 「TechAcademy」は、エンジニア転職保証コースを提供しています。給付金制度の対象講座として認定されているため、金銭面の負担も抑えることができます。

フリーランスとして活動する

レバテックフリーランス」「ITプロパートナーズ」「ギークスジョブ」は、フリーランスエージェントサービスです。 エージェントによって、支払いサイトなど細かい違いはありますが、まずは良い案件を見つけることが重要です。 登録自体は無料なので、複数エージェントに登録して、より多くの案件を紹介してもらうのがおすすめです。