関数: 宣言、式、アロー関数
3通りの方法で関数を定義し、ホイスティングを理解し、引数と戻り値を使い、簡潔なアロー関数を記述します。
「関数: 宣言、式、アロー関数」はCoddyKit上の無料Frontend Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFrontend Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Frontend Academyコースには全4レッスンが含まれています。
関数とは何でしょうか?
関数は再利用可能なコードのまとまりです。入力(パラメーター)を受け取り、処理を実行し、必要に応じて出力を返します。JavaScript では関数は第一級の値であり、変数に代入したり、引数として渡したり、別の関数から返したりできます。
関数宣言
関数宣言では、function キーワードを使って名前付き関数を作成します。関数宣言はホイスティングされるため、コード内で宣言より前に呼び出せます。
function greet(name) {
return `Hello, ${name}!`;
}
// Can call before declaration due to hoisting:
console.log(greet('Alice')); // 'Hello, Alice!'関数式
関数式では、関数を変数に代入します。関数式はホイスティングされません(変数は undefined としてホイスティングされます)。関数式には無名関数と名前付き関数があります。
const multiply = function(a, b) {
return a * b;
};
console.log(multiply(3, 4)); // 12
// Named function expression (name useful in stack traces):
const factorial = function fact(n) {
return n <= 1 ? 1 : n * fact(n - 1);
};アロー関数
アロー関数は ES6 で導入された簡潔な構文です。独自の this を持たず、外側のスコープから this を継承します。コールバックや短い関数に適しています。
// Standard arrow:
const add = (a, b) => a + b;
// Single parameter (no parens needed):
const double = n => n * 2;
// No parameters:
const greet = () => 'Hello!';
// Multi-line body needs {} and return:
const process = (x) => {
const result = x * 2;
return result + 1;
};パラメーターと引数
パラメーターは、関数定義に記述する名前です。引数は、関数を呼び出すときに渡す値です。余分な引数は無視され、不足している引数は undefined になります。
function info(name, age) {
console.log(`${name} is ${age}`);
}
info('Alice', 30); // 'Alice is 30'
info('Bob'); // 'Bob is undefined'デフォルトパラメーター
ES6 では、パラメーターにデフォルト値を設定できます。引数が undefined の場合(まったく渡されなかった場合も含む)に、デフォルト値が使われます。
function greet(name = 'World') {
return `Hello, ${name}!`;
}
console.log(greet()); // 'Hello, World!'
console.log(greet('Alice')); // 'Hello, Alice!'return文
関数はデフォルトで undefined を返します。値を返すには return を使います。関数は最初に実行した return で終了し、その後のコードは実行されません。
function divide(a, b) {
if (b === 0) return null; // early return
return a / b;
}
console.log(divide(10, 2)); // 5
console.log(divide(10, 0)); // nullレストパラメーター
レストパラメーター ...args は、残りのすべての引数を配列にまとめます。最後のパラメーターでなければなりません。現代的なコードでは、従来の arguments オブジェクトの代わりに使います。
function sum(...numbers) {
return numbers.reduce((total, n) => total + n, 0);
}
console.log(sum(1, 2, 3, 4)); // 10値としての関数(第一級関数)
関数は変数に保存したり、引数(コールバック)として別の関数に渡したり、関数から返したりできます。これにより、配列メソッドやイベントリスナーのような強力なパターンを利用できます。
const numbers = [3, 1, 4, 1, 5];
const sorted = numbers.sort((a, b) => a - b); // callback
console.log(sorted); // [1, 1, 3, 4, 5]純粋関数
純粋関数は、同じ入力に対して常に同じ出力を返し、副作用(DOM の変更、ネットワーク呼び出し、グローバルな値の変更)がありません。純粋関数はテスト、デバッグ、動作の理解が容易です。
// Pure:
const add = (a, b) => a + b;
// Impure (side effect: mutates external state):
let total = 0;
function addToTotal(n) { total += n; }即時実行関数式(IIFE)
IIFE は定義されるとすぐに実行されます。かつてはプライベートなスコープを作るために使われていました。現在はモジュールやブロックスコープによって必要性が下がっていますが、古いコードベースでは今でも見かけます。
(function () {
const secret = 'hidden';
console.log('IIFE ran');
})();
// secret is not accessible hereクイックチェック
アロー関数について正しい説明はどれですか?
まとめ: JavaScriptの関数
関数宣言はホイスティングされます。関数式とアロー関数はホイスティングされません。アロー関数は簡潔で、独自の this を持ちません。不足している引数にはデフォルトパラメーターを使います。関数は第一級の値なので、自由に受け渡しできます。
よくある質問
「関数: 宣言、式、アロー関数」レッスンは無料ですか?
はい。「関数: 宣言、式、アロー関数」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Frontend Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Frontend Academyコースには全4レッスンが含まれています。
「関数: 宣言、式、アロー関数」で何を学びますか?
3通りの方法で関数を定義し、ホイスティングを理解し、引数と戻り値を使い、簡潔なアロー関数を記述します。 ブラウザで直接実行するハンズオンコードでFrontend Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Frontend Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのFrontend Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「関数: 宣言、式、アロー関数」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このFrontend Academyレッスンでコードを書いて実行できますか?
はい。すべてのFrontend Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 変数: let、const、varとスコープ
- データ型: string、number、boolean、null、undefined
- 関数: 宣言、式、アロー関数
- 制御フロー: if、else、switch、for、while