1. 0 年は入門
  2. 境界のちょうど 1 年は初級
  3. 境界のちょうど 3 年は中級
  4. 境界のちょうど 5 年は上級
  5. 12 年でも上級
コース一覧
JavaScript基礎文法:処理を組み立てる
if / else if / else で段階判定

JavaScript基礎文法:処理を組み立てる

if・switch による条件分岐、配列とループ、関数とコールバック、オブジェクトを順に組み立てる全 33 レッスン(525 分)の基礎文法コースです。FizzBuzz、作品リスト、関数への整理、作品データの構造化を通して、入力から結果を返す処理を自分で分解して書きます。DOM 操作は次のコースで扱います。

1
条件分岐
01. if 文の基本15分
02. if / else if / else で段階判定15分
03. switch 文で値を一覧から選ぶ15分
04. 条件を組み合わせる20分
05. FizzBuzz で複数条件を組み立てる20分
06. つくる 時間帯で挨拶を変える20分
07. 第1章まとめクイズ10分
2
配列とループ
01. 配列のきほん15分
02. 要素を足す・取り除く15分
03. for ループで合計を求める15分
04. for-of で配列を走査する15分
05. while で条件を満たす間くり返す15分
06. break と continue でループを制御する15分
07. つくる 作品リストを一覧にする20分
08. 第2章まとめクイズ10分
3
関数
01. 関数宣言15分
02. アロー関数15分
03. デフォルト引数15分
04. 早期 return でネストを浅くする15分
05. 変数のスコープ15分
06. コールバック関数15分
07. forEach で配列をまわす15分
08. つくる 処理を関数に整理する20分
09. 第3章まとめクイズ10分
4
オブジェクト
01. オブジェクトのきほん18分
02. オブジェクトで複数の値を返す16分
03. const と参照18分
04. ?. で安全に取り出す16分
05. 分割代入18分
06. スプレッド構文18分
07. find と includes で探す16分
08. つくる 作品データを構造化する25分
09. 第4章まとめクイズ10分

if / else if / else で段階判定

else if の並び順
解説

このレッスンで分かること

  • else if をつなげると 3 つ以上に分けられます
  • 上から順に評価され、最初に当てはまった 1 つだけが動きます

if を並べただけだと、全部が動いてしまう

判定が 2 択で済まない場面はいくらでもあります。プロフィールサイトの作品に、閲覧数で 3 段階のラベルを付けたいとしましょう。前のレッスンの if をそのまま 3 つ並べると、こうなります。

JavaScript

// NG。views が 300 のとき、3 つとも実行される let label = ""; if (views >= 200) { label = "人気"; } if (views >= 100) { label = "注目"; } if (views >= 1) { label = "これから"; } // label は "これから" になってしまう

if を並べるのは、独立した質問を 3 回することです。300 は 3 つとも満たすので代入が 3 回起き、最後に書いた値が勝ちます。ほしいのは「3 つのうち 1 つだけ」でした。それを書くのが else if です。

JavaScript

let label = ""; if (views >= 200) { label = "人気"; } else if (views >= 100) { label = "注目"; } else { label = "これから"; }

else if はいくつでもつなげられます。最後の else は「どれにも当てはまらなかったとき」の受け皿です。

ゆるい条件を先に書くと、後ろへ永遠に届かない

else if の連鎖は、上から順に評価して、最初に true になったところで打ち止めです。後ろの条件は評価すらされません。ですから並べる順番がすべてを決めます。

JavaScript

// NG。ゆるい条件を先に書いてしまった if (views >= 1) { return "これから"; } else if (views >= 100) { return "注目"; } else if (views >= 200) { return "人気"; }

閲覧数が 500 でも「これから」が返ります。views >= 1 が最初に当たるので、その先には一生たどり着きません。下の 2 つは、書いてあるのに決して動かないコードになっています。数値の範囲で分けるときは、きびしい条件から順に並べるのが鉄則です。

裏を返すと、この性質のおかげで 2 つ目以降に上限を書き足す必要がありません。views >= 100 の枝に来た時点で、200 未満であることはすでに保証されています。

境目がどちらに入るか分からなくなる

枝が増えるほど、範囲の重なりや抜けが見えにくくなります。コードを書く前に、範囲を表にしてしまうのがいちばん確実です。

閲覧数戻り値条件式
200 以上"人気"views >= 200
100 以上 200 未満"注目"views >= 100
100 未満"これから"else

表にすると、ちょうど 200 がどちらの行に属するかがひと目で分かります。あとは表を上から順にコードへ書き写すだけです。表の行数と枝の数が合っていれば、抜けも重なりもありません。

解説

範囲を表にする作業は、実務ではそのまま仕様の確認になります。「99 はどちらですか」と聞けば、仕様の穴がその場で見つかります。

よくある間違い

  • 上限を二重に書く — else if は前の条件が false のときにしか来ないので、views >= 100 && views < 200 の後半は不要です
  • 最後の else を書き忘れる — どの範囲にも当てはまらない値が来たときに undefined が返ります。最後は必ず else で受け止めてください

要件

  1. 関数名は skillLevel、引数は経験年数を表す数値 years の 1 つ
  2. 5 以上なら "上級"、3 以上 5 未満なら "中級"、1 以上 3 未満なら "初級"、1 未満なら "入門" を返す
  3. if と else if と else をつなげて書き、必ずどれか 1 つの枝で値を返す
  4. 戻り値はすべて文字列にする

入出力例

skillLevel(0) → "入門" skillLevel(1) → "初級" skillLevel(3) → "中級" skillLevel(5) → "上級" skillLevel(12) → "上級"

ヒント

範囲の表を先に作り、きびしい条件から順に並べます

if (years >= 5) { ... } else if (years >= 3) { ... } のようにつなげます

ゆるい条件を先に書くと後ろの枝に到達しません。12 を流して上級が返るか確かめてください

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

関連レッスン

  • switch 文で値を一覧から選ぶ

    カテゴリ名を受け取って、表示用のラベルを返す関数を switch で書きます。決まった値の一覧から 1 つを選ぶ分岐に向いた構文です。

  • 条件を組み合わせる

    公開状態とカテゴリという 2 つの情報から、作品に付けるラベルを決めます。入れ子になった条件を論理演算子でフラットに書き換えます。

  • FizzBuzz で複数条件を組み立てる

    数値を 1 つ受け取り、3 の倍数なら Fizz、5 の倍数なら Buzz、15 の倍数なら FizzBuzz を返す関数を書きます。判定の順番を学ぶ定番のドリルです。

  • つくる 時間帯で挨拶を変える

    0 から 23 の時刻を受け取り、時間帯に合った挨拶を返す関数を作ります。第 4 章の総まとめとして、プロフィールサイトの表示を時間で変えます。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • 評価出力品質を数値化して継続改善する活動
  • 戻り値呼び出し元への返答を表す点線矢印
  • 関数処理に名前を付けて再利用できる単位
  • 引数位置引数=順番で渡す。
main.js
学習モード
エディタを読み込んでいます

メモ

if / else if / else で段階判定

⌘S で保存