Day 2・条件と くり返し — プログラムに判断させる
条件分岐 — if / else if / else
「もし〜なら」でプログラムに道を選ばせる。比較演算子と &&・|| の読み方を身につける。
プログラムは「分かれ道」で判断する
if 文は「もし〜なら、こうする」という分かれ道です。たとえば散歩中に分かれ道があって、「雨なら傘の道、晴れなら公園の道」と選ぶのと同じです。条件が正しい(true)なら { } の中を実行し、そうでなければ飛ばします。
const age = 20;
if (age >= 20) {
console.log("おとな");
} else {
console.log("みせいねん");
}分かれ道が3つ以上あるときは else if でつなぎます。上から順に条件を試して、最初に true になった道だけを通ります。
const score = 75;
if (score >= 80) {
console.log("合格");
} else if (score >= 60) {
console.log("あと少し");
} else {
console.log("不合格");
}比較演算子 — 2つの値をくらべる
条件の中では、値どうしをくらべる比較演算子を使います。=== は「等しい」、!== は「等しくない」、< > <= >= は大小の比較です。くらべた結果は必ず true か false(真偽値)になります。
console.log(5 === 5); // true(等しい)
console.log(5 !== 3); // true(等しくない)
console.log(3 < 5); // true(3は5より小さい)
console.log(5 <= 4); // false= と === を混同しない
= は「代入(入れる)」、=== は「等しいか比べる」で、まったくの別物です。if (age = 20) と書くと、比べるつもりが age に 20 を入れてしまい、いつも通ってしまうバグになります。「比べたい」ときは必ず === を使います。1つの = はイコールではなく「入れる矢印」だと覚えておきましょう。
== はあいまいに比べてしまう
console.log(0 == ""); // true(型が違うのに等しい扱い)
console.log(1 == true); // true(数値と真偽値を混ぜて比較)=== は型もふくめて厳密に比べる
console.log(0 === ""); // false(数値と文字列は別物)
console.log(1 === true); // false(数値と真偽値は別物)== は型の違いを見逃してあいまいに比べるため、思わぬ結果になります。迷ったら === を使えば、まず間違いありません。
&& と || — 条件を組み合わせる
複数の条件を合わせたいときは、&&(かつ)と ||(または)を使います。&& は「両方とも true なら true」、|| は「どちらか一方でも true なら true」です。「傘を持っていて、かつ雨なら」は &&、「土曜または日曜なら」は || です。
const age = 25;
const hasTicket = true;
if (age >= 20 && hasTicket) {
console.log("入場できます"); // 両方 true なので通る
}
const day = "日";
if (day === "土" || day === "日") {
console.log("週末です"); // どちらか当たれば通る
}AIにはこう聞く
条件が読みづらいときは「この if 文の条件を日本語で説明して」とAIに聞くと、&& や || を『〜かつ〜』のように言葉にしてくれます。逆に「20歳以上で、かつチケットを持っている場合だけ通す条件を書いて」と日本語で頼めば、if 文を提案してくれます。あなたの仕事は、提案された条件が本当に意図どおりか(=== か == か、&& か || か)を読んで確かめることです。
- if / else if / else は「分かれ道」。上から順に、最初に当てはまった道だけ通る
- 比較演算子(===、!==、<、>、<=、>=)の結果は true か false になる
- 値を比べるときは === を使う。= は代入なので混同しない
- && は「かつ(両方 true)」、|| は「または(どちらか true)」
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
次のコードで表示されるものはどれですか。 const n = 60; if (n >= 80) { console.log("A"); } else if (n >= 60) { console.log("B"); } else { console.log("C"); }
「年齢が18歳以上で、かつ会員である」場合だけを表す条件はどれですか。
値を比べるときに == ではなく === を使うほうがよいのは、なぜですか。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。