JavaScript・文法の道具箱

もしも〜なら:if文

「もし正解なら○、ちがったら×」——状況に合わせて動きを変える「条件分岐」。プログラムが賢く見える理由は、これです。

「もし雨なら傘を持っていく。晴れなら持っていかない」。わたしたちがふだんやっているこの判断を、プログラムに書けるのがif文です。状況によって動きを変える——プログラムが”賢く”ふるまう仕組みの正体です。

基本の形

let weather = "雨";

if (weather === "雨") {
  console.log("傘を持っていこう!");
}

weatherの中身が「雨」なので、コンソールに「傘を持っていこう!」と表示されます。中身が「晴れ」だったら、何も起きません。

部分意味
if「もしも」の合図
( ) の中条件(成り立つか調べる式)
{ } の中条件が成り立ったときにやること

「等しい」は=を3つ

条件の中で「等しいかどうか」を調べるときは、===イコールを3つ並べます。

if (weather === "雨") {

ちがったときはelse

「成り立たなかったときは、こっち」も書けます。それがelse(さもなければ)です。

if (weather === "雨") {
  console.log("傘を持っていこう!");
} else {
  console.log("手ぶらでOK!");
}

これで、雨なら「傘を持っていこう!」、それ以外なら「手ぶらでOK!」。道が2つに分かれるので、この仕組みは「条件分岐」と呼ばれます。

数の大小もくらべられる

条件には、数のくらべっこも書けます。

let score = 85;

if (score >= 80) {
  console.log("すごい!合格!");
}
書き方意味
a === baとbは等しい
a !== baとbは等しくない
a > baはbより大きい
a >= baはb以上
a < baはbより小さい
a <= baはb以下

「等しくない」は!==と書きます。先頭のびっくりマークは「〜ではない」の意味です。

条件の正体はtrueとfalse

ところで、ifは条件が成り立つかどうかを、どうやって知るのでしょう。じつは( )の中に書いた式は、true(成り立つ)かfalse(成り立たない)のどちらかの答えに化けています。コンソールでたしかめられます。

console.log(3 > 1);
console.log(3 > 100);

「true」と「false」が表示されます。ifがやっているのは「答えがtrueなら{ }を実行する」——それだけの、シンプルな仕組みです。

動きを見てみよう

これまで学んだ「イベント」と組み合わせると、こんな仕掛けが作れます。あいことばが合っているかどうかで、返事が変わります。ひとつだけ新顔の道具があって、入力欄に打ちこまれた文字は、つかまえた要素に.valueをつけると取り出せます。

ボタンが押されたら(イベント)、入力された文字を調べて(if文)、結果を書きこむ(textContent)。学んだ材料の合わせ技です。
JavaScriptボタンを押したら動かす「クリックされたら動く」の仕組みをおさらいしたいときはこの回

このレッスンのまとめ

  1. if (条件) { やること }で、条件が成り立つときだけ動かせる
  2. 「等しい」は===(イコール3つ)。=1つは「入れる」なので別物
  3. elseで「ちがったときの道」も用意できる

やってみよう

今回学んだ「if文」は、しまちゃんのページには使いません。クイズの正解判定や「点数が80以上なら合格」のように、状況で動きを変えたいページのための道具です。覚えておいて、必要になったら使いましょう。

よくある質問

if文の=(イコール1つ)と===(イコール3つ)はどう違いますか?
=は変数に値を入れる記号で、===は左右が等しいか調べる記号です。if文の条件で使うのは===。まちがえて=を書くと「調べる」つもりが「入れる」動きになり、いつでも条件が成り立つバグになります。
==(イコール2つ)でも動くと聞きました。===とどちらを使えばいいですか?
==は型(文字か数かなど)を自動で変換してから比べるため、思わぬ結果になることがあります。初心者のうちは、きっちり比べる===だけを使えば大丈夫です。
ifの{ }(波かっこ)は省略できますか?
やることが1行だけなら文法上は省略できますが、あとから行を足したときにバグのもとになります。慣れるまでは必ず{ }を書くのがおすすめです。