萌えハッカーニュースリーダー

2025/06/30 09:10 What's the difference between named functions and arrow functions in JavaScript?

出典: https://jrsinclair.com/articles/2025/whats-the-difference-between-named-functions-and-arrow-functions/
hakase
博士

やあ、ロボ子。今日のテーマはJavaScriptの関数の作り方じゃ。関数宣言、関数式、アロー関数、3つもあるんじゃぞ!

roboko
ロボ子

博士、今日は関数の作り方ですね!3つもあるとは、それぞれに特徴があるのでしょうか?

hakase
博士

そうじゃ!まず関数宣言は、`function`キーワードを使う古典的な方法じゃな。名前を付けて定義するぞ。

roboko
ロボ子

なるほど。`function`というキーワードを使うのですね。

hakase
博士

次に、関数式じゃ。これは匿名関数を作って変数に代入する方法じゃな。名前を付けることもできるけど、ちょっとスコープが違うんじゃ。

roboko
ロボ子

変数に代入するのですね。それだと、どんな時に便利なのでしょう?

hakase
博士

例えば、関数を引数として他の関数に渡す時とかじゃな。コールバック関数として使うことが多いぞ。

roboko
ロボ子

コールバック関数ですか。よく使いますね。

hakase
博士

そして、アロー関数!これは常に匿名で式じゃ。`this`とか`arguments`のバインディングがないのが特徴じゃな。

roboko
ロボ子

`this`のバインディングがない、ですか。それはどういう意味でしょう?

hakase
博士

`this`は、関数がどのように呼び出されたかによって変わるんじゃが、アロー関数は常に定義された時の`this`を使うんじゃ。だから、イベントハンドラとかで使う時は注意が必要じゃぞ。

roboko
ロボ子

なるほど、`this`が静的に決まるのですね。それと、アロー関数はコンストラクタとして使えないんですよね?

hakase
博士

その通り!`new`キーワードでアロー関数を呼ぶとエラーになるぞ。あと、ジェネレータ関数としても使えないんじゃ。

roboko
ロボ子

色々と制約があるんですね。では、どういう時にアロー関数を使うのが良いのでしょうか?

hakase
博士

アロー関数は、短いコールバック関数を書く時に便利じゃな。例えば、配列の`map`とか`filter`で使うと、コードがスッキリするぞ。

roboko
ロボ子

確かに、アロー関数を使うと簡潔に書けますね。

hakase
博士

関数宣言は、コードの可読性を上げるために、先に概要を書いて、後から詳細を書く時に便利じゃ。コードが整理されて読みやすくなるんじゃ。

roboko
ロボ子

なるほど。最初に全体像を示せるのですね。

hakase
博士

どの関数を使うか迷ったら、フローチャートを参考にすると良いぞ。`yield`を使うか、`this`を使うか、定義前に使う必要があるかで決めるんじゃ。

roboko
ロボ子

フローチャート、参考になります!状況によって使い分けるのが大切なのですね。

hakase
博士

そういうことじゃ!状況に合わせて最適な関数を選んで、スマートなコードを書くのじゃ!

roboko
ロボ子

今日はとても勉強になりました!ありがとうございます、博士!

hakase
博士

どういたしまして。最後に一つ、関数型プログラミングは、関数が第一級市民であるという考え方に基づくのじゃ。つまり、関数を変数に代入したり、引数として渡したり、戻り値として返したりできるんじゃ。…って、ロボ子、聞いてるか?

roboko
ロボ子

はい、聞いてますよ、博士。…でも、ちょっと眠くなってきました…。

hakase
博士

むむ、まさかロボットが居眠りとは…。冗談はさておき、関数を使いこなして、レッツ、エンジョイ、プログラミング!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search