はじめに
以下のサイトを使用し、javascriptを学習しています。
現代の JavaScript チュートリアル
以下、備忘録として残します。
用語
イテレーション
- ループ本体1回の実行のこと
whileとfor
whileループ
- condition が true の間、ループの本体の code が実行される
- 下のループは i < 3 の間、i を出力する
let i = 0;
while (i < 3) { // 0, 次に 1, 次に 2 を表示
alert( i );
i++;
}
//ループは3回イテレーション
//i++がない場合永遠に繰り返される
forループ
- 下のループは 0 から 3 までalertを実行する
for (let i = 0; i < 3; i++) { // 0, 次に 1, 次に 2 を表示
alert(i);
}
forループの動き
-
begin
(i = 0) ループに入ると1度実行される -
condition
(i < 3) すべてのループのイテレーションの前にチェックされる、もしも false の場合ループを停止 -
step
(i++) 各イテレーションで、条件チェックの前に本体の後に実行される -
body
(alert(i)) 条件が真の間繰り返し実行される
ループ処理のアルゴリズム(とても分かりやすい考え方)
begin を実行
→ (if condition → body を実行し step を実行)
→ (if condition → body を実行し step を実行)
→ (if condition → body を実行し step を実行)
インライン変数宣言
- ループの中だけで使える変数
for (let i = 0; i < 3; i++) {
alert(i); // 0, 1, 2
}
>
alert(i); // エラー, そのような変数はありません
- ループの外で変数宣言していれば、ループ外からでも使える
let i = 0;
>
for (i = 0; i < 3; i++) { // 既存の変数を使用
alert(i); // 0, 1, 2
}
>
alert(i); // 3, ループの外で宣言されているので使える
省略もできる、書き方
- beginを省略
let i = 0; // すでに i を宣言し代入済み
>
for (; i < 3; i++) { // "begin" 不要
alert( i ); // 0, 1, 2
}
- stepを省略
let i = 0;
>
for (; i < 3;) {
alert( i++ );
}
break(ループを終わらせる)
通常ループは条件が偽になると停止するが、breakディレクティブでループから出ることを強制できる
let sum = 0;
>
while (true) {
let value = +prompt("Enter a number", '');
if (!value) break; //
sum += value;
}
>
alert( 'Sum: ' + sum );