BLOG

ブログ

blog

アロー関数とは?

JavaScriptにおいて、関数を宣言する方法には様々なものがありますが、その中でも近年注目されているのがアロー関数です。アロー関数は、関数を簡潔に書くことができる上に、thisの扱いが通常の関数と異なる点が特徴的です。本記事では、アロー関数の基本的な使い方や、通常の関数との違いについて詳しく解説していきます。

アロー関数について

アロー関数は、以下のような構文で表されます。

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

通常の関数の宣言方法とは異なり、functionキーワードを用いずに=>(アロー)を使用して関数を宣言します。また、引数が1つの場合には、引数部分の丸括弧を省略することができます。

const 関数名 = 引数 => {
  // 処理内容
};

アロー関数は、短く簡潔に関数を宣言することができるため、コードをスッキリと書くことができます。

アロー関数の使い方

アロー関数は、通常の関数と同様に使用することができます。例えば、以下のように使用することができます。

// 通常の関数
function double(num) {
  return num * 2;
}

// アロー関数
const double = num => num * 2;

// 使用例
console.log(double(3)); // 6
アロー関数は、引数が1つの場合には引数部分の丸括弧を省略することができるため、引数が1つの場合には以下のように書くことができます。

const square = x => x * x;

console.log(square(3)); // 9

また、引数がない場合には、以下のように空の丸括弧を記述します。

const sayHello = () => console.log('Hello');

sayHello(); // "Hello"

アロー関数は、通常の関数と同様に、変数に代入することができます。以下の例では、配列の要素を2倍にする関数を、通常の関数とアロー関数の両方で宣言しています。

// 通常の関数
const double = function(num) {
  return num * 2;
};

// アロー関数
const doubleArrow = num => num * 2;

const numbers = [1, 2, 3];

const doubledNumbers = numbers

またはmap()メソッドを使用して、配列の要素を2倍にします。

const doubledNumbers = numbers.map(double);
console.log(doubledNumbers); // [2, 4, 6]

const doubledNumbersArrow = numbers.map(doubleArrow);
console.log(doubledNumbersArrow); // [2, 4, 6]

通常の関数とアロー関数で宣言した関数を.map()メソッドに渡して、同じ結果が得られることが確認できます。

アロー関数のthisの扱い

通常の関数におけるthisは、呼び出し元によって異なる値を持ちます。一方で、アロー関数におけるthisは、定義された時のスコープのthisが引き継がれるため、呼び出し元によってthisの値が変わることはありません。

以下の例では、通常の関数とアロー関数でthisを使用した場合の違いを確認しています。

const person = {
  name: 'John',
  age: 30,
  sayHello: function() {
    console.log(`Hello, my name is ${this.name}`);
  },
  sayHelloArrow: () => {
    console.log(`Hello, my name is ${this.name}`);
  }
};

person.sayHello(); // "Hello, my name is John"
person.sayHelloArrow(); // "Hello, my name is undefined"

通常の関数では、sayHelloメソッドを宣言したオブジェクトがthisとなり、正しく名前が表示されます。一方で、アロー関数では、定義された時点でのthis(グローバルオブジェクト)が引き継がれるため、this.nameがundefinedとなってしまいます。

まとめ

本記事では、JavaScriptにおけるアロー関数の基本的な使い方や、通常の関数との違いについて解説してきました。アロー関数は、簡潔に関数を宣言することができる上に、thisの扱いが異なる点が特徴的です。しかし、thisの扱いが異なるために予期しない結果になることがあるため、注意が必要です。適切に使い分けて、効率的なコーディングを行いましょう。

© 2023 IT OUT.NET