第6章 関数

関数の基本

関数は一連の処理をひとまとめにしたものです。functionキーワードを使って定義します。

function greet() {
    console.log("こんにちは!");
}
greet(); // こんにちは!


関数宣言と関数式

関数は2つの主な方法で定義できます。

関数宣言

function sum(a, b) {
    return a + b;
}
console.log(sum(2, 3)); // 5

関数式

const product = function(x, y) {
    return x * y;
}
console.log(product(4, 5)); // 20


即時関数 (IIFE)

関数を定義と同時に実行することができます。これは変数のスコープを制限するためによく使用されます。

(function() {
    var localVariable = "私はローカルです";
    console.log(localVariable); // 私はローカルです
})();


アロー関数

ES6から、短い構文で関数を書く方法が追加されました。

const square = x => x * x;
console.log(square(6)); // 36


デフォルト引数

関数の引数にデフォルトの値を設定することができます。

function show(message = "デフォルトのメッセージ") {
    console.log(message);
}
show(); // デフォルトのメッセージ
show("カスタムメッセージ"); // カスタムメッセージ


残余引数 (Rest parameters)

複数の引数を配列として受け取ることができます。

function logArgs(...args) {
    console.log(args);
}
logArgs(1, 2, 3, 4); // [1, 2, 3, 4]


スプレッド構文を用いた引数

配列の各要素を個別の引数として関数に渡すことができます。

const numbers = [1, 2, 3];
function sum(x, y, z) {
    return x + y + z;
}
console.log(sum(...numbers)); // 6


コールバック関数

関数は他の関数に引数として渡されることができます。

function process(callback) {
    callback();
}
process(() => console.log("コールバックが実行されました!"));


練習問題1.

以下の要件を満たす関数multiplyを作成してください。

2つの数値を引数として受け取ります。

2つの数値の積を返します。


練習問題2.

以下の要件を満たすアロー関数isEvenを作成してください。

1つの数値を引数として受け取ります。

引数が偶数の場合、trueを返します。奇数の場合、falseを返します。


練習問題3.

以下の要件を満たす関数greetを作成してください。

1つの文字列(名前)を引数として受け取ります。この引数はデフォルトで"Guest"という値を持っています。

Hello, [名前]!という形式で挨拶の文字列を返します。引数が渡されなかった場合、Hello, Guest!という文字列を返します。