繰り返し処理 forEach
todoLists.forEach(function (todoList) {
console.log(todoList);
});
この部分の動きを、ステップバイステップで見ていきます:
`todoLists.forEach()` は、配列 `todoLists` の各要素に対して、指定された関数を実行します。
`function (todoList) { ... }` は、各要素に対して実行される関数です。この関数は「コールバック関数」と呼ばれます。
`todoList` は、この関数の引数です。`forEach` は配列の要素を1つずつこの `todoList` に入れます。
`{ console.log(todoList); }` は、関数の中身です。ここでは、`todoList` に入った値をコンソールに表示します。
つまり、分かりやすくいうと:
配列 `todoLists` から、要素を一つずつ取り出します。
取り出した要素を `todoList` という変数に入れます。
その `todoList` の値をコンソール画面に表示します。
これを配列の要素がなくなるまで繰り返します。
例えば、`todoLists` の中身が `["JavaScriptの勉強", "お迎え", "お買い物"]` だとすると:
まず `"JavaScriptの勉強"` が `todoList` に入り、表示されます。
次に `"お迎え"` が `todoList` に入り、表示されます。
最後に `"お買い物"` が `todoList` に入り、表示されます。
この処理により、配列の全ての要素が順番にコンソールに表示されるわけです。
コールバック関数とは
ある関数の中で呼び出される別の関数のことです。
「後で呼び出される関数」という意味があります。
-- -- -- -- -- --
`forEach()` は配列に対して使う関数で、この関数の役割は、配列の各要素に対して何かの処理を実行することです。
`forEach()`関数を実行するための材料として、引数として`function() {}が使われます。
`function() {}` の部分では、具体的に何の処理を行うかを定義します。これが実際に各要素に対して実行される関数です。
この `function() {}` は `forEach()` の中に渡されて、`forEach()` によって呼び出されます。つまり、`forEach()` の指示に従って実行される関数です。
このような関係性(ある関数に渡されて、その関数によって呼び出される関数)から、`function() {}` はコールバック関数と呼ばれます。
つまり、`forEach` は配列の各要素を見つけるたびに「はい、次の要素見つけたよ。さあ、君の出番だ!」とコールバック関数に伝えます。そして、コールバック関数がその要素を使って何かをする(この場合は表示する)のです。