

中嶋悟
名前:中嶋 悟(なかじま さとる) ニックネーム:サトルン 年齢:28歳 性別:男性 職業:会社員(IT系メーカー・マーケティング部門) 通勤場所:東京都千代田区・本社オフィス 通勤時間:片道約45分(電車+徒歩) 居住地:東京都杉並区・阿佐ヶ谷の1LDKマンション 出身地:神奈川県横浜市 身長:175cm 血液型:A型 誕生日:1997年5月12日 趣味:比較記事を書くこと、カメラ散歩、ガジェット収集、カフェ巡り、映画鑑賞(特に洋画)、料理(最近はスパイスカレー作りにハマり中) 性格:分析好き・好奇心旺盛・マイペース・几帳面だけど時々おおざっぱ・物事をとことん調べたくなるタイプ 1日(平日)のタイムスケジュール 6:30 起床。まずはコーヒーを淹れながらニュースとSNSチェック 7:00 朝食(自作のオートミールorトースト)、ブログの下書きや記事ネタ整理 8:00 出勤準備 8:30 電車で通勤(この間にポッドキャストやオーディオブックでインプット) 9:15 出社。午前は資料作成やメール返信 12:00 ランチはオフィス近くの定食屋かカフェ 13:00 午後は会議やマーケティング企画立案、データ分析 18:00 退社 19:00 帰宅途中にスーパー寄って買い物 19:30 夕食&YouTubeやNetflixでリラックスタイム 21:00 ブログ執筆や写真編集、次の記事の構成作成 23:00 読書(比較記事のネタ探しも兼ねる) 23:45 就寝準備 24:00 就寝
アロー関数と無名関数の違いを徹底解説
JavaScriptには関数を作る書き方がいくつかあります。とくにアロー関数と無名関数は見た目が似ていることが多く、初めて学ぶ人にとっては混乱の原因になりがちです。このガイドでは両者の本質的な違いを、日常のプログラミングの場面でどう使い分けるかという実践的な視点も交えながら丁寧に解説します。まずは基本的な性質を押さえ、次に具体的な場面ごとにどう選ぶかを整理します。
この違いを知ると、コードの挙動を予測しやすくなり、バグの原因を減らすことができるようになります。読み進めるうちに、「なぜそうなるのか」という理屈が自然と分かるようになるはずです。
まずは定番の違いを列挙しておきましょう。
・書き方の違い: アロー関数は => を使い、無名関数は function() で定義します。
・this の束縛: アロー関数は自分の this を持たず、外側のスコープの this を継承します。一方、無名関数は自身の thisを持ち、呼び出し方次第で変わります。
・arguments オブジェクト: アロー関数には arguments オブジェクトがありません。無名関数には存在します。
・コンストラクタとしての使用: アロー関数は new での実行に対応していません。無名関数は constructor として使えます。
・返り値の書き方: アロー関数は単一の式なら{ }を省略してその値を返すことができます。複数の処理を書く場合は { return ... } と書く必要があります。
これらの性質は、実際のコードの見た目だけでなく動作にも影響します。「この関数はどのときに this をどのように参照するのか」を予測する力がつくと、関数の挙動を理解するのがぐっと楽になります。以下の表は、アロー関数と無名関数の代表的な違いを一目で見比べられるようにしたものです。特徴 アロー関数 無名関数 this の束縛 外側の this を参照(束縛されない) 自身の this を持つ(動的に変わる) arguments なし あり コンストラクタとしての利用 不可 可 返り値の書き方 単一式は implicit return 通常の return が必要な形も多い
実務での使い分けと注意点
実務では、アロー関数と無名関数を使い分ける場面がいくつかあります。まず、イベントリスナーやコールバックの「この関数が呼ばれた場所での this」を特に大事にしたいときは、アロー関数を使うと外側の this をそのまま参照できるので便利です。
しかし、オブジェクトのメソッドとして定義して、そのメソッド自身を this に紐づけたい場合には、無名関数の方が適しています。アロー関数をメソッドとして用いると、意図せず this が外部の値を指してしまい、期待した振る舞いにならないことがあるからです。
また、プロトタイプを使って新しいオブジェクトを生成する constructor 的な用途では、アロー関数は使えません。「この関数は new で呼ぶことがあるのか?」を最初に考える癖をつけると、誤用を減らせます。
これらを踏まえた、使い分けのコツをまとめます。
・短く書ける場面ではアロー関数を活用し、コードをすっきりさせる。
・this が変わると困る場合には無名関数を選ぶ。
・メソッドとして呼び出す場面では this の挙動を意識する。
・大量の引数を扱う場面は無名関数で状況をはっきりさせる。
・単純な返り値ならアロー関数の省略形を使って読みやすさを重視する。
総じて、アロー関数は「外側の文脈の this を継承して、短く書く」用途に向いています。一方、無名関数は「自分自身の this と arguments を使い、より自由に振る舞う」用途に適しています。
この2つを使い分けられると、コードの読みやすさとデバッグのしやすさが格段に上がります。
今日は友だちとカフェでコードの話をしていたときのこと。友だちは「アロー関数と無名関数って何がどう違うの?」と質問してきました。僕はこう答えました。
「アロー関数はね、見た目は短いけど、thisを自分で持たないから、外側の場面のthisをそのまま使うんだ。それに対して無名関数は自分自身のthisを持っていて、呼び出し方でこのthisがどう変わるかが大事になる。だから、イベントの中で this が呼び出された文脈を大事にしたいときはアローを使うと混乱が少なくなる。けれど、オブジェクトのメソッドとして使うときには無名関数の方が思い通りに動くことが多い。これを覚えておくと、コードを読んで『このthisは何を指しているのか』とつまづくことが減るんだ。」という感じで会話は終わりました。
この話をまとめると、キーワードは「文脈と用途」。アローは短く美しく、無名は柔軟に動く。
だからこそ、実際の場面でどちらを使うかを考えるときには「その関数がどんな文脈で呼ばれるのか」を第一に考えるのがコツです。これができれば、プログラム全体の挙動を予測しやすくなり、友だちと協力してコードを直すときにも役立ちます。