12 / 2744%

LESSON 12 ・ 条件分岐

ifのネスト

条件分岐を重ねる

let gender = "male";
let age = 12;
if (gender === "male") {
  if (age < 18) {
    console.log("結婚できません");
  } else {
    console.log("結婚できます");
  }
} else {
  if (age < 16) {
    console.log("結婚できません");
  } else {
    console.log("結婚できます");
  }
}

2022年までの日本の法律では、男性は18歳以上・女性は16歳以上になると結婚することができました。この条件でgender(性別)とage(年齢)から結婚できるか判定するコードは上記のようになります。

このコードでは、ifで分岐した後でさらにifで分岐しています。これをifネスト(nest)と言います。

PRACTICE

演習問題

コードを自分で書いて実行してから、答えと解説を確認しましょう。

問題1

天気weather"rainy"なら、さらに気温temperatureを調べます。気温が10より小さければ"傘と上着"、そうでなければ"傘"と表示してください。雨でなければ"傘は不要"と表示します。天気は"rainy"、気温は8とします。

答えと解説を見る

模範解答

let weather = "rainy";
let temperature = 8;

if (weather === "rainy") {
  if (temperature < 10) {
    console.log("傘と上着");
  } else {
    console.log("");
  }
} else {
  console.log("傘は不要");
}

最初のifで天気を分岐し、そのブロックの中のifで気温を分岐しています。今回は傘と上着が表示されます。

問題2

会員かどうかを表すmember"yes"のときだけ購入金額totalを調べ、total5000より大きければ"割引あり"、そうでなければ"通常価格"と表示してください。会員でなければ"会員登録が必要"と表示します。member"yes"total6200とします。

答えと解説を見る

模範解答

let member = "yes";
let total = 6200;

if (member === "yes") {
  if (total > 5000) {
    console.log("割引あり");
  } else {
    console.log("通常価格");
  }
} else {
  console.log("会員登録が必要");
}

会員であることを確認した後で、購入金額についてもう一度分岐しています。今回は割引ありが表示されます。

問題3

信号light"green"のとき、さらに車car"none"かを調べます。車がいなければ"渡る"、いれば"待つ"と表示してください。信号が青でなければ"止まる"と表示します。light"green"car"coming"とします。

答えと解説を見る

模範解答

let light = "green";
let car = "coming";

if (light === "green") {
  if (car === "none") {
    console.log("渡る");
  } else {
    console.log("待つ");
  }
} else {
  console.log("止まる");
}

外側の条件を満たした場合だけ、内側の条件が調べられます。今回は信号は青ですが車がいるため、待つが表示されます。