読み込み中...

JavaScriptラムダ式完全解説!7つの使い方と注意点を一挙公開

JavaScriptラムダ式を初心者向けに解説する記事のイメージ JS
この記事は約6分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、JavaScriptラムダ式の作成方法や使い方、注意点、カスタマイズ方法を理解し、実践的なスキルを身に付けることができます。

●JavaScriptラムダ式とは

JavaScriptラムダ式は、無名関数やアロー関数とも呼ばれ、短くてシンプルな関数の記述方法です。

ラムダ式は、コードを簡潔にし、可読性を向上させる効果があります。

●ラムダ式の作成方法

○基本的な構文

ラムダ式は次のように記述します。

// 通常の関数
function(a, b) {
  return a + b;
}

// ラムダ式(アロー関数)
(a, b) => a + b;

この例では、2つの引数を受け取り、それらを加算するラムダ式を作成しています。

引数のリストの後ろにアロー(=>)を置き、関数本体を記述します。

●ラムダ式の使い方

○サンプルコード1:配列の操作

ラムダ式は、配列の操作に役立ちます。

例えば、配列の要素をフィルタリングする場合、次のように記述できます。

const numbers = [1, 2, 3, 4, 5, 6];

// 偶数だけを抽出するラムダ式を使ったフィルタリング
const evenNumbers = numbers.filter((number) => number % 2 === 0);

console.log(evenNumbers); // [2, 4, 6]

このサンプルコードでは、配列numbersから偶数だけを抽出して新しい配列evenNumbersを作成しています。

filterメソッドにラムダ式を渡すことで、簡潔に処理を記述できます。

○サンプルコード2:イベントリスナー

ラムダ式は、イベントリスナーの記述にも役立ちます。

下記の例では、ボタンクリック時にアラートを表示するイベントリスナーを設定しています。

<button id="myButton">クリックしてください</button>

<script>
const button = document.getElementById('myButton');

// ボタンがクリックされたときにアラートを表示するラムダ式を使ったイベントリスナー
button.addEventListener('click', () => {
  alert('ボタンがクリックされました!');
});
</script>

addEventListenerメソッドにラムダ式を渡すことで、イベントリスナーの処理をシンプルに記述できます。

○サンプルコード3:オブジェクトのメソッド

ラムダ式は、オブジェクトのメソッドを定義する際にも使えます。

下記の例では、Personオブジェクトにgreetメソッドを追加しています。

const person = {
  name: '山田太郎',
  age: 30,

  // ラムダ式を使ってgreetメソッドを定義
  greet: () => {
    console.log('こんにちは、私は' + this.name + 'です。');
  },
};

person.greet(); // こんにちは、私は山田太郎です。

greetメソッドをラムダ式で定義することで、コードが簡潔になります。

○サンプルコード4:即時実行関数

ラムダ式は、即時実行関数(IIFE)を簡潔に記述することもできます。

下記の例では、即時実行関数を使って変数resultに計算結果を格納しています。

// ラムダ式を使った即時実行関数
const result = (() => {
  const a = 2;
  const b = 3;
  return a * b;
})();

console.log(result); // 6

このコードでは、ラムダ式を使った関数が定義され、すぐに実行されています。その結果をresult変数に格納しています。

○サンプルコード5:関数チェーン

ラムダ式を使った関数チェーンの例を紹介します。

下記のコードでは、配列の要素を変換してからフィルタリングしています。

const numbers = [1, 2, 3, 4, 5];

// ラムダ式を使った関数チェーン
const processedNumbers = numbers
  .map((number) => number * 2)
  .filter((number) => number > 5);

console.log(processedNumbers); // [6, 8, 10]

このコードでは、mapメソッドとfilterメソッドをチェーンさせて、処理を続けています。

ラムダ式を使って、コードを短く保っています。

○サンプルコード6:クロージャ

ラムダ式を使って、クロージャを簡単に実装することができます。

下記のコードでは、カウンター機能を持つ関数を作成しています。

const createCounter = () => {
  let count = 0;

  return () => {
    count += 1;
    console.log('現在のカウント: ' + count);
  };
};

const counter = createCounter();
counter(); // 現在のカウント: 1
counter(); // 現在のカウント: 2

このコードでは、createCounter関数がラムダ式で定義され、その中でさらにラムダ式を使ってクロージャを作成しています。

○サンプルコード7:カリー化

ラムダ式を使って、カリー化を実現することができます。

下記のコードでは、3つの引数を持つ関数をカリー化しています。

const multiply = (a) => (b) => (c) => a * b * c;

const multiplyBy2 = multiply(2);
const multiplyBy2And3 = multiplyBy2(3);

console.log(multiplyBy2And3(4)); // 24

このコードでは、multiply関数がラムダ式で定義され、その中で引数を受け取るラムダ式が入れ子になっています。

このようにして、カリー化された関数を作成しています。

●注意点と対処法

ラムダ式は短縮記法であるため、コードの可読性が低下する可能性があります。

そのため、適切なコメントを残すことが重要です。また、ラムダ式内でのthisの挙動に注意が必要です。

必要に応じて、通常の関数式を使用してください。

●カスタマイズ方法

ラムダ式は様々な場面で利用できますが、次にそのカスタマイズ例を示します。

○サンプルコード8:ラムダ式のカスタマイズ

ラムダ式を使って、引数のデフォルト値を設定することができます。

下記のコードでは、greet関数にデフォルト値を設定しています。

// ラムダ式を使ったデフォルト値の設定
const greet = (name = "ゲスト") => `こんにちは、${name}さん`;

console.log(greet("太郎")); // こんにちは、太郎さん
console.log(greet()); // こんにちは、ゲストさん

このコードでは、ラムダ式を使って、name引数にデフォルト値を設定しています。

引数が指定されていない場合、デフォルト値が使用されます。

まとめ

ラムダ式は、JavaScriptのコードを簡潔に記述するための機能であり、多くの場面で活用できます。

ただし、可読性やthisの挙動に注意が必要です。

適切なコメントやデフォルト値の設定など、カスタマイズを行うことで、より効果的にラムダ式を利用できます。