JS勉強記②繰り返し処理
for
for (var i = 1; i <= 3; i++){
console.log(i)
}
変数iの値を1から3まで出力。
iの初期条件(i=1からスタート)、iの条件(i <= 3)、iに1をインクリメント(i+1)。
その結果をコンソールに出力し続ける。i=4になった時点で処理中止。
while
var j = 1;
while (j <= 3) {
console.log(j);
j++;
}
変数jの値を1から3まで出力。
j=1を宣言。「jの値が3以下」が条件なので、jの値をコンソールに出力。
そのあとjに1をインクリメント。
また最初の処理に戻り、j=4となった時点で処理中止。
do while
var k = 1;
do {
console.log(k)
k++;
} while (k <= 3);
変数kの値を1から3まで出力。
k=1を宣言。kの値をコンソールに出力。そのあとkに1をインクリメント。
この処理をkの値が3以下の間繰り返す。k=4となった時点で処理中止。
MEMO:while / do whileの違い
whileは先に変数の条件を確認して、最初の宣言がその条件をクリアしていれば処理(この場合コンソールへの出力)を実施する。↑の場合もしj=4でスタートしていれば、j<=3という条件をクリアしていないので、まったく処理されず終了する。
do whileは先に処理を実施して、その処理を繰り返すかの判定に条件を使う。↑の場合もしj=4でスタートしていても、いったん「4」はコンソールへ出力される。そのあとのjへのインクリメントは中止。
演習
問題:1〜100の整数かつ偶数の値について、合計値を計算してコンソールに出力。(forを使う、偶数=2で割った余りが0)
【自分でググらず書いたコード】
for (var i = 0; i <= 100; i++) {
if (i % 2 === 0) {
console.log(i++);
}
}
i=0を宣言。iの条件は100以下。この条件下でiに1をインクリメントする。
その次に「もしiの余剰が0だった場合は」コンソールにiを出力という処理を実施。
結果:コンソールに0~100までのうち偶数のみが出力され続けた。
【正解】
var sum = 0;
for (var i = 1; i<= 100; i++) {
if ((i % 2) === 0) {
sum += i;
}
}
console.log(sum);
習ってなかったsumが必要とのこと。sumという変数を合計値として扱う。
sum=0を宣言。そのあとfor分でi=1を宣言。iの条件は100以下。この条件下でiに1をインクリメントする。
その次に「もしiの余剰が0だった場合は」変数sumに変数iを加算代入。
<i=1の場合>
i=1
1 / 2 = 0あまり1
よって処理はしない
<i=2の場合>
i=2
2 / 2 = 1あまり0
sum=0(sumの初期値) + 2(=i)
sum=2
この変数sumにi=100の場合まで加算代入し続ける。その結果をコンソールに出力。
sumはMDNで調べるべきだったのね。あと基本ルールとして()の中で計算するときはさらに()で区切らないといけない。数学思い出すね。