JavaScript入門 練習問題 14:匿名関数とアロー関数
以下のコードで使われている「匿名関数」の主な特徴は何ですか?
```javascript
const prices = [100, 200, 300, 400, 500];
// パターン1: 名前付き関数を使用
function addTax(price) {
return price * 1.1;
}
const withTax1 = prices.map(addTax);
// パターン2: 匿名関数を使用
const withTax2 = prices.map(function(price) {
return price * 1.1;
});
// パターン3: アロー関数(匿名関数の一種)
const withTax3 = prices.map((price) => price * 1.1);
console.log(withTax1); // [110, 220, 330, 440, 550]
console.log(withTax2); // [110, 220, 330, 440, 550]
console.log(withTax3); // [110, 220, 330, 440, 550]
```
- 関数に名前を付けずに定義でき、一度きりの処理に適している
- 通常の関数より実行速度が大幅に高速になる
- グローバル変数を自動的に削除してメモリを節約する
- 関数内でのエラーを自動的に修正する機能がある
- 関数の巻き上げ(ホイスティング)が行われ、定義前でも呼び出せる
Qraftユーザーの成績:正答率 100%(11/11回正解)
正解と解説を見る
匿名関数とは関数名を付けずに定義する関数のことで、一度きりの処理やコールバックとして渡す場面によく使われます。アロー関数も匿名関数の一種です。
【正解の理由】
function(price) { return price * 1.1; } のように名前を付けずに定義できるため、map()やfilter()、イベントリスナーなど、わざわざ名前を用意するほどでもない一度きりの処理に適しています。
【不正解の理由】
• 通常の関数より実行速度が大幅に高速になる:匿名関数と名前付き関数の実行速度に大きな差はありません。
• グローバル変数を自動的に削除してメモリを節約する:匿名関数にそのような自動削除機能はありません。
• 関数内でのエラーを自動的に修正する機能がある:匿名関数にエラーを自動修正する機能はなく、エラーは通常通り発生します。
• 関数の巻き上げ(ホイスティング、=定義前でも呼び出せる仕組み)が行われ、定義前でも呼び出せる:巻き上げが起こるのはfunction文(名前付きの関数宣言)であり、匿名関数(関数式)は巻き上げの対象外で、定義前に呼び出すとエラーになります。