if-else, else ifは条件の網羅性を扱うときに使う。switchは値の網羅性を扱うときに使う。
値の網羅性を扱うというのは、単一の値が取りうる状態を列挙することを指す。
例えばユーザタイプによって処理を変えたい時は、switchを使うといい。
switch (UserType) {
case(Regular):
// 通常ユーザの処理
case(Admin):
// 管理ユーザの処理
default:
// それ以外の処理
}条件の網羅性というのは、複数の値の組み合わせで変わる条件を列挙することを指す。
例えばユーザタイプに加えて、扱う言語によって処理が変わる場合は、else-ifを使うといい。
if (UserType === 'Admin' && language === 'ja') {
// 管理ユーザかつ言語が日本語の場合の処理
} else if (UserType === 'Admin' && language === 'en') {
// 管理ユーザかつ言語が英語の場合の処理
} else {
// それ以外の処理
}
条件が2パターンしかない場合はif/elseを使うといい。
if (pressKey === 'a') {
// aが押された時の処理
} else {
// それ以外の処理
}この場合、ifを2回でも同じことが書けるが、条件が網羅されているかどうかを表現したいならif-elseを使うべき。
// 上の例と同じだが、条件を網羅しているのかが直感的に分かりづらい。
if (alphabet === 'a') {
}
if (alphabet !== 'a') {
}1つのブロックで1つの条件を扱った方がわかりやすい。
値や条件を網羅したいのではなく、特殊なパターンのときだけ処理したいという場合はifを使う。いわゆるアーリーリターン。
if (err) {
// エラーがある場合の処理
}
if (!user) {
// ユーザが存在しない場合の処理
}
// 本処理