制御フロー — if · for · while · switch
制御フロー — if · for · while · switch
🎯 このレッスンを読み終えたら
このレッスンを読み終えると、以下の3つを自信を持って実践できるようになります。
- ▸✅ if-else · switch · 三項演算子を いつ使うか の判断
- ▸✅ ?? (nullish) と || (falsy) の決定的な違い
- ▸✅ for · for-of · for-in · forEach の
await互換性
学習目標を チェックリストとして手元に置き、すべて答えられるようになったらレッスンを閉じましょう。
if / else / 三項演算子 — *分岐* の3つの表現
最も基本的な if
条件は truthy/falsy で評価されます。0、''、null、undefined、NaN、false が falsy。それ以外はすべて truthy。
三項演算子 — 短い if の表現
値を返す if。React JSX 内では非常によく使われます:
三重三項 (a ? b : c ? d : e) は 可読性が下がるので避けましょう。if-else で書き直してください。
オプショナルチェーン + Nullish 合体演算子 — 分岐の短縮形
?. — 左辺が null/undefined なら 即座に undefined を返す(TypeError を回避)。?? — 左辺が null/undefined のときのみ 右辺を使用。0 や '' はそのまま使われます。
|| との違いは バイブコーディングの定番の落とし穴。AI 生成コードの 80% が ?? を使います。
ループ4種 — for · while · for...of · for...in
古典的な for
インデックスを直接操作する必要があるとき(逆順の反復・スキップ)に便利。
while / do-while
条件が動的なとき(入力待ち・リトライループ)に使います。一般的な繰り返しには for-of の方が適しています。
for...of — 値 を反復(配列)
最もよく使われる配列のループ。break・continue が使えます(forEach との決定的な違い)。
for...in — キー を反復(オブジェクト)
注意: 配列に for...in を使うと インデックスが文字列 になり、継承されたプロパティが含まれる可能性があります — 配列は for...of、オブジェクトは for...in(または Object.entries)。
break · continue
forEach と for...of の違い — バイブコーディングの定番の質問
ルール: await または break が必要なら for...of、単純な変換なら map/filter/reduce(forEach は減少傾向)。
switch — case フォールスルーの落とし穴
基本的な switch
フォールスルー(fall-through)の落とし穴
day === 'MON' の入力で「月曜日」と「火曜日」の両方が出力されます。break の抜け漏れはバグの原因第1位。
意図的なフォールスルー — 複数の case をまとめる
オブジェクトリテラルで代替 — よりモダンな書き方
if-else や switch が長くなったら、オブジェクトマッピング がすっきりします:
JSX・React コンポーネントの分岐でよく使われるパターン。
🤖 AI へのリクエスト例
- ▸「この if-else チェーンを switch に変換して」
- ▸「この switch で break の抜け漏れがないか確認して」
- ▸「この分岐をオブジェクトマッピングにリファクタリングして」
制御フローを理解すると、AI に対してフローの変形を正確に指示 でき、AI が生成したコードのバグを見抜く ことができます。