[JavaScript] アロー関数って何?

JavaScriptにおいて、アロー関数はES6(ECMAScript 2015)から導入された新しい関数の記法です。アロー関数を使うことで、従来の関数の定義方法よりも簡潔で直感的なコードを書くことができます。ここでは、アロー関数の基本的な使い方と、そのメリット・デメリットについて説明します。

目次

アロー関数の基本的な使い方

アロー関数は、以下のように記述します。

const 関数名 = (引数1, 引数2, ...) => {
  // 関数の処理内容
};

アロー関数の大きな特徴は、従来の関数定義方法よりも簡潔であることです。例えば、以下のような関数定義方法を考えます。

function add(a, b) {
  return a + b;
}

この関数をアロー関数で書き換えると、以下のようになります。

const add = (a, b) => {
  return a + b;
};

上記のコードでは、functionというキーワードが必要なく、また、return文も省略することができます。さらに、引数が1つの場合には、以下のように省略することもできます。

const square = x => x * x;

アロー関数を使うことで、より短く直感的なコードを書くことができます。

アロー関数のメリット

短く直感的なコードが書ける

アロー関数を使うことで、従来の関数定義方法よりも短く直感的なコードを書くことができます。上記の例でも示しましたが、アロー関数を使うことで、functionreturnなどのキーワードを省略することができます。

thisの扱いが明確になる

アロー関数は、従来の関数定義方法と異なり、自分自身のthisを持ちません。アロー関数の内部でthisを参照する場合、アロー関数が宣言されたスコープのthisを参照するため、thisの扱いが明確になります。従来の関数定義方法では、thisの参照先が曖昧になる場合があり、意図しない挙動を引き起こすことがありました。

オブジェクトのメソッドとして利用する場合に便利

従来の関数定義方法では、オブジェクトのメソッドとして定義する場合に、以下のように書く必要があります。

const obj = {
  name: "John",
  sayHi: function() {
    console.log("Hi, my name is " + this.name);
  }
};

しかし、アロー関数を使うことで、以下のように簡潔に書くことができます。

const obj = {
  name: "John",
  sayHi: () => {
    console.log("Hi, my name is " + this.name);
  }
};

上記のコードでは、sayHiメソッド内でのthisの参照先が、objオブジェクトではなく、アロー関数が宣言されたスコープのthisを参照するため、注意が必要です。

アロー関数のデメリット

メソッドとして利用する場合、thisの参照先が曖昧になる

先程も説明したように、アロー関数をオブジェクトのメソッドとして利用する場合、thisの参照先がアロー関数が宣言されたスコープのthisを参照するため、注意が必要です。これは、アロー関数がオブジェクトのメソッドとして利用される場合に限られますが、意図しない挙動を引き起こすことがあります。

argumentsが使えない

従来の関数定義方法では、argumentsオブジェクトを使って、可変長の引数を取得することができました。しかし、アロー関数ではargumentsオブジェクトが使えません。代わりに、...argsのようなスプレッド演算子を使って、可変長の引数を取得することができます。

まとめ

アロー関数は、短く直感的なコードを書くことができるため、コードの可読性や保守性を向上させることができます。また、thisの扱いが明確になるため、意図しない挙動を防ぐことができます。ただし、メソッドとして利用する場合には、thisの参照先が曖昧になる場合があるため、注意が必要です。また、可変長の引数を取得する場合には、argumentsオブジェクトが使えないため、スプレッド演算子を使う必要があります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次