JS初めてのJavaScript

Day 2条件と くり返し — プログラムに判断させる

条件分岐 — if / else if / else

「もし〜なら」でプログラムに道を選ばせる。比較演算子と &&・|| の読み方を身につける。

プログラムは「分かれ道」で判断する

if 文は「もし〜なら、こうする」という分かれ道です。たとえば散歩中に分かれ道があって、「雨なら傘の道、晴れなら公園の道」と選ぶのと同じです。条件が正しい(true)なら { } の中を実行し、そうでなければ飛ばします。

JAVASCRIPT
const age = 20;
if (age >= 20) {
  console.log("おとな");
} else {
  console.log("みせいねん");
}
if は「もし〜なら」、else は「そうでなければ」の道

分かれ道が3つ以上あるときは else if でつなぎます。上から順に条件を試して、最初に true になった道だけを通ります。

JAVASCRIPT
const score = 75;
if (score >= 80) {
  console.log("合格");
} else if (score >= 60) {
  console.log("あと少し");
} else {
  console.log("不合格");
}
上から順にチェックし、最初に当てはまった道だけ通る

比較演算子 — 2つの値をくらべる

条件の中では、値どうしをくらべる比較演算子を使います。=== は「等しい」、!== は「等しくない」、< > <= >= は大小の比較です。くらべた結果は必ず true か false(真偽値)になります。

JAVASCRIPT
console.log(5 === 5);   // true(等しい)
console.log(5 !== 3);   // true(等しくない)
console.log(3 < 5);     // true(3は5より小さい)
console.log(5 <= 4);    // false
比較の結果は true か false のどちらか

= と === を混同しない

= は「代入(入れる)」、=== は「等しいか比べる」で、まったくの別物です。if (age = 20) と書くと、比べるつもりが age に 20 を入れてしまい、いつも通ってしまうバグになります。「比べたい」ときは必ず === を使います。1つの = はイコールではなく「入れる矢印」だと覚えておきましょう。

== はあいまいに比べてしまう

JAVASCRIPT
console.log(0 == "");     // true(型が違うのに等しい扱い)
console.log(1 == true);   // true(数値と真偽値を混ぜて比較)

=== は型もふくめて厳密に比べる

JAVASCRIPT
console.log(0 === "");    // false(数値と文字列は別物)
console.log(1 === true);  // false(数値と真偽値は別物)

== は型の違いを見逃してあいまいに比べるため、思わぬ結果になります。迷ったら === を使えば、まず間違いありません。

&& と || — 条件を組み合わせる

複数の条件を合わせたいときは、&&(かつ)と ||(または)を使います。&& は「両方とも true なら true」、|| は「どちらか一方でも true なら true」です。「傘を持っていて、かつ雨なら」は &&、「土曜または日曜なら」は || です。

JAVASCRIPT
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に噛み砕いてもらいましょう。

理解度チェック

答えられれば、面接で説明できる状態に一歩近づきます。

Q1

次のコードで表示されるものはどれですか。 const n = 60; if (n >= 80) { console.log("A"); } else if (n >= 60) { console.log("B"); } else { console.log("C"); }

Q2

「年齢が18歳以上で、かつ会員である」場合だけを表す条件はどれですか。

Q3

値を比べるときに == ではなく === を使うほうがよいのは、なぜですか。

記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。