JavaScriptの関数について詳しく解説します。関数は、特定のタスクを実行するための再利用可能なコードのブロックです。関数を使用することで、コードの可読性と再利用性を向上させることができます。
関数の基本構文
JavaScriptでは、関数を定義する方法がいくつかあります。主に以下の方法があります。
- 関数宣言(Function Declaration)
- 関数式(Function Expression)
- アロー関数(Arrow Function)
- 匿名関数(Anonymous Function)
1. 関数宣言(Function Declaration)
関数宣言は、function
キーワードを使って関数を定義する方法です。関数名を持つことが多いです。
function greet(name) {
return `こんにちは、${name}さん!`;
}
console.log(greet("太郎")); // こんにちは、太郎さん!
2. 関数式(Function Expression)
関数式は、関数を変数に代入する方法です。匿名関数を使うことが一般的です。
const greet = function(name) {
return `こんにちは、${name}さん!`;
};
console.log(greet("太郎")); // こんにちは、太郎さん!
3. アロー関数(Arrow Function)
アロー関数は、ES6(ECMAScript 2015)で導入された新しい関数定義の方法です。短く書けるのが特徴です。
const greet = (name) => {
return `こんにちは、${name}さん!`;
};
console.log(greet("太郎")); // こんにちは、太郎さん!
アロー関数はさらに短く書くこともできます。単一の式を返す場合、return
キーワードと中括弧 {}
を省略できます。
const greet = name => `こんにちは、${name}さん!`;
console.log(greet("太郎")); // こんにちは、太郎さん!
関数のパラメータと引数
関数は、複数のパラメータを受け取ることができます。関数を呼び出す際に渡す値を引数と言います。
function add(a, b) {
return a + b;
}
console.log(add(3, 5)); // 8
デフォルトパラメータ
デフォルトパラメータを使用すると、引数が渡されなかった場合に既定の値を設定することができます。
function greet(name = "世界") {
return `こんにちは、${name}さん!`;
}
console.log(greet()); // こんにちは、世界さん!
console.log(greet("太郎")); // こんにちは、太郎さん!
可変長引数(Rest Parameters)
可変長引数を使用すると、任意の数の引数を配列として受け取ることができます。
function sum(...numbers) {
return numbers.reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3, 4)); // 10
関数のスコープ
関数のスコープとは、関数内で定義された変数が関数外からアクセスできないことを意味します。関数内で定義された変数は、関数のスコープ内でのみ有効です。
function example() {
let message = "こんにちは";
console.log(message); // こんにちは
}
example();
// console.log(message); // エラー: messageは定義されていません
関数のクロージャ(Closure)
クロージャとは、関数とその関数が定義されたスコープの組み合わせのことです。クロージャを使用すると、外部関数のスコープ内の変数にアクセスできます。
function outerFunction() {
let outerVariable = "外部";
function innerFunction() {
console.log(outerVariable); // 外部
}
return innerFunction;
}
const closureFunction = outerFunction();
closureFunction(); // 外部
即時関数(Immediately Invoked Function Expression, IIFE)
即時関数は、定義すると同時に実行される関数です。グローバルスコープを汚染しないために使用されます。
(function() {
console.log("即時実行関数が実行されました!");
})();
関数のコールバック
コールバック関数は、他の関数に引数として渡される関数です。非同期処理やイベント処理でよく使用されます。
function greet(name, callback) {
console.log(`こんにちは、${name}さん!`);
callback();
}
function sayGoodbye() {
console.log("さようなら!");
}
greet("太郎", sayGoodbye);
// こんにちは、太郎さん!
// さようなら!
まとめ
- 関数宣言(Function Declaration):
function
キーワードを使用して関数を定義します。 - 関数式(Function Expression): 関数を変数に代入する方法です。
- アロー関数(Arrow Function): ES6で導入された新しい関数定義の方法です。
- デフォルトパラメータ: 引数が渡されなかった場合に既定の値を設定します。
- 可変長引数(Rest Parameters): 任意の数の引数を配列として受け取ります。
- クロージャ(Closure): 関数とそのスコープの組み合わせです。
- 即時関数(IIFE): 定義すると同時に実行される関数です。
- コールバック関数: 他の関数に引数として渡される関数です。
これでJavaScriptの関数についての基本的な理解が深まったと思います。