概要: このチュートリアルでは、複数の条件に基づいてコードブロックを実行するために、JavaScriptのswitch
文を使用する方法を学習します。
JavaScript switch case文の紹介
switch
文は、式
を評価し、その結果をcase
値と比較し、一致するcase
値に関連付けられた文を実行します。
以下は、switch
文の構文を示しています。
switch (expression) {
case value1:
statement1;
break;
case value2:
statement2;
break;
case value3:
statement3;
break;
default:
statement;
}
Code language: JavaScript (javascript)
仕組み
- まず、
switch
キーワードの後の括弧内の式
を評価します。 - 次に、式の結果を、
case
ブランチのvalue1
、value2
、…と上から順に比較します。switch
文は厳密比較(===
)を使用します。 - 3番目に、
式
の結果がcase
キーワードの後の値と等しいcase
ブランチの文を実行します。break
文はswitch
文を終了します。break
文を省略すると、コードの実行は元のcaseブランチから次のブランチにフォールスルーします。 式の結果がどの値にも厳密に等しくない場合、switch
文はdefault
ブランチの文
を実行します。
switch
文は、一致するものが見つかった時点で、式
の結果と残りのcase値の比較を停止します。
switch
文はif…else…if
文に似ています。しかし、より読みやすい構文を持っています。
次のフローチャートは、switch
文を示しています。
実際には、コードを読みやすくするために、複雑なif-else-if
文を置き換えるために、switch
文がよく使用されます。
技術的には、switch
文は次のif-else-if
文と同等です。
if (expression === value1) {
statement1;
} else if (expression === value2) {
statement2;
} else if (expression === value3) {
statement3;
} else {
statement;
}
Code language: JavaScript (javascript)
JavaScript switch caseの例
JavaScriptのswitch
文を使用する例をいくつか見てみましょう。
1) JavaScript switch文を使用して曜日を取得する
次の例では、switch
文を使用して、日番号に基づいて曜日を取得します。
let day = 3;
let dayName;
switch (day) {
case 1:
dayName = 'Sunday';
break;
case 2:
dayName = 'Monday';
break;
case 3:
dayName = 'Tuesday';
break;
case 4:
dayName = 'Wednesday';
break;
case 5:
dayName = 'Thursday';
break;
case 6:
dayName = 'Friday';
break;
case 7:
dayName = 'Saturday';
break;
default:
dayName = 'Invalid day';
}
console.log(dayName); // Tuesday
Code language: JavaScript (javascript)
出力
Tuesday
仕組み
まず、日番号を保持するday
変数と曜日名変数(dayName
)を宣言します。
次に、switch
文を使用して、日番号に基づいて曜日を取得します。日が1
の場合、曜日は日曜日
です。日が2
の場合、曜日は月曜日
などとなります。
3番目に、曜日をコンソールに出力します。
2) JavaScript switch文を使用して、月に基づいて日数を取得する
次の例では、switch
文を使用して、月のカウント日を取得します。
let year = 2016;
let month = 2;
let dayCount;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dayCount = 31;
break;
case 4:
case 6:
case 9:
case 11:
dayCount = 30;
break;
case 2:
// leap year
if ((year % 4 == 0 && !(year % 100 == 0)) || year % 400 == 0) {
dayCount = 29;
} else {
dayCount = 28;
}
break;
default:
dayCount = -1; // invalid month
}
console.log(dayCount); // 29
Code language: JavaScript (javascript)
この例では、4つのケースがあります。
- 月が1、3、5、7、8、10、または12の場合、1か月の日数は31です。
- 月が4、6、9、または11の場合、その月の日数は30です。
- 月が2で、年がうるう年でない場合、日数は28です。年がうるう年の場合、日数は29です。
- 月が有効な範囲(1〜12)にない場合、
default
ブランチが実行され、dayCount
変数に-1が設定されます。これは、無効な月を示します。
まとめ
switch
文は式を評価し、その結果をcase
値と比較し、一致するcaseに関連付けられた文を実行します。- コードを読みやすくするために、複雑な
if...else...if
文ではなくswitch
文を使用してください。 switch
文は、厳密比較(===
)を使用して、式
とcase
値を比較します。
このチュートリアルは役に立ちましたか?