制御フローとは、文法によってコンピューターの挙動が変化することです
例えば、この選択をしたら甲の挙動 こっちの選択をしたら乙の挙動
ある一文を記述したら、同じような挙動が繰り返されて行われるなどです
if文
「もし〜なら...」というような選択をtrue/false(真・儀)で判断する文法です
if(条件式){ 条件式がtrueの場合に実行する命令} else{ 条件式がfalseの場合に実行する命令}
windowに明日は晴れますか?と、表示させます
OKをクリック→「はい、晴れです」 キャンセルをクリック→「明日は雨です」
yes/noまたはtrue/falseで判断してコンソールに出力される文法です
{ }で囲まれた1文、または複数の文
if...else if文
先ほどは甲ならyes、乙ならnoみたいに単発で完結してましたが、else if文を使用すると、複数の分岐点を作ることが可能になります
if(条件式1){ 条件式1がtrueの場合に実行する命令} elseif(条件式2){ 条件式2がtrueの場合に実行する命令} ...}else{ すべての条件式がfalseの場合に実行する命令}
条件の当てはめは上から処理されていきます
arrが3より上の数字ならconsoleに「arrは3より上です」と、出力
arrに5を代入しているので「arrは3より上です」と、出力されています
同じ条件式でarrに1を代入してみます
条件式の(arr>=3),(arr>=2)にも当てはまりません
全ての条件に当てはまらなかったので1番下のlogが出力されます
arr=5の時に(arr>=3)(arr>=2)の2つの条件式が当てはまってますが、consoleにha「arrは3より上です」だけしか出力されてません
なぜかというと、if文などは実行される挙動は最初のブロック文だけになります
switch文
真偽だけで判断される条件文ではなく、選択肢が3つ以上の値に別れるような条件に使用
switch(式){ case 値1; //式の値=値1の場合実行される命令文 [break;] case 値2; //式の値=値2の場合実行される命令文 [break;] ... case 値a; //式の値=値aの場合実行される命令文 [break;] default; //式の値がどれも一致しなかった場合の命令文 [break;] }
cにBを代入しています
上から順に条件が一致するまで当てはめていき、c=Bになった命令文がconsoleに出力されてます
繰り返し処理
while文
while(条件式){ 条件式がtrueの時の文 }
do...while文
do { 条件式がtrueの時の文 }while(条件);
whileとdo...whileの違い
ループが開始される前から条件式がfalseである場合がポイント!
while文はループの最初で条件式を判断/条件によってはループ処理が実行されない
do...while文はループの最後で条件式を判断/最低1回は処理が行われる
for文
for(初期化,ループ条件,再設定){ ループ内で実行する条件文 };
初期化→「x=5」xに5を代入
ループ条件→「x<10」xが10より少ない時ループ処理
設定→「x++」xの値を1つずつ増加
xが10になるまでループ処理が行われます
for...in/for...of文
for (変数 in オブジェクト){ ループ文 };
オブジェクトとは簡単に言えば、箱、入れ物と考えます
オブジェクトの要素を取り出して処理を繰り返します
for...inでは、オブジェクトを一時的に変数に格納します
連想配列(配列ではない)fruitsを順に取り出し、
変数shopに代入しながらループを繰り返しています
for...inは連想配列に使用し、配列を処理するにはfor...ofを使用します
for(変数ofオブジェクト){ ループ文 };