コンテンツにスキップ

JavaScript:複雑な条件分け

関連項目


if文の組み合わせ

if文の中にif文を入れると複雑な条件わけができます。

ヒーロー判定

空を飛べるかどうか でどんなヒーローかを判定します。空を飛べたら パーマン 、飛べなければ 仮面ライダー になります。

ヒーロー判定(空を飛ぶか?)
let kotae = prompt("空を飛べますか?「はい」か「いいえ」で答えてください");
if (kotae == "はい")
{
alert("あなたはパーマンです!");
}
else
{
alert("あなたは仮面ライダーです!");
}

でも、空を飛ぶヒーローには アンパンマン もいますよね?

そこで、 顔が食べられるかどうか の判定も加えてみましょう。顔が食べられるかどうかの判定はこのようになります。

ヒーロー判定(顔が食べられるか?)
let kotae2 = prompt("顔を食べられますか?「はい」か「いいえ」で答えてください。");
if ( kotae2 == "はい")
{
alert("あなたはアンパンマンです!");
}
else
{
alert("あなたはパーマンです!");
}

この2つを組み合わせるとこのようになります:

ヒーロー判定(組み合わせ)
let kotae = prompt("空を飛べますか?「はい」か「いいえ」で答えてください");
if (kotae == "はい")
{
let kotae2 = prompt("顔を食べられますか?「はい」か「いいえ」で答えてください。");
if ( kotae2 == "はい")
{
alert("あなたはアンパンマンです!");
}
else
{
alert("あなたはパーマンです!");
}
}
else
{
alert("あなたは仮面ライダーです!");
}

最初のif文の {} ​の中に、二番目のif文がまるごと入っているのがわかりますか?

Scratchで書くと・・・

Scratchでif文を組み合わせた場合


AND と OR

複雑な条件を書くときは、 AND(アンド)OR(オア) が便利です。ANDは英語で「なおかつ」という意味で、ORは英語で「あるいは」という意味です。

条件書き方意味
ANDa && baなおかつb
ORa || baあるいはb

AND「なおかつ」

たとえば、小学生の条件を考えましょう。小学校は7歳から入るので、7歳以上でないと入れません。 しかし、13歳になると中学生になるので、12歳以下でもないといけません。したがって、

「7歳以上なおかつ12歳以下」

というのが小学生の条件ということになります。

これをJavaScriptで表すと

「nenreiが7歳以上」なおかつ「nenreiが12歳以下」
nenrei >= 7 && nenrei <= 12

OR「あるいは」

たとえば、「ダウンタウン」であるための条件を考えましょう。 ダウンタウンは松本人志さんと浜田雅功さんからなるので、芸人がダウンタウンであるためには、その人が松本人志さんであるか、その人が浜田雅功さんのどちらかであればよいということになります。

「松本人志さんである」あるいは「浜田雅功さんである」

というのがダウンタウンであるための条件です。

これをJavaScriptで表すとこのようになります。

「geininが松本人志さん」あるいは「geininが浜田雅功さん」
geinin == "松本人志" || geinin == "浜田雅功"

let nenrei = prompt("あなたは何歳ですか?");
if (nenrei > 6 && nenrei < 13)
{
alert("あなたは小学生です");
}

Scratchで書くと・・・

AND条件をScratchで書いた場合

let nenrei = prompt("あなたは何歳ですか?");
if (nenrei < 7 || nenrei > 12)
{
alert("あなたは小学生ではありません!");
}

Scratchで書くと・・・

OR条件をScratchで書いた場合