JavaScript switch文の基本的な使い方と注意点
JavaScript
のswitch
文の基本的な使い方を紹介します。
JavaScript If,else,else if文の基本的な使い方でif
文の基本的な使い方について説明しましたが、else if
の数が増えてくると、可読性や保守性が悪くなってしまいます。
例えば以下のような分岐処理で、比較対象をa
ではなくa + 1
やb
などに条件を変更したい場合、else if
の箇所をすべて修正する必要があります。
var a = 2;
if (a == 1) {
console.log('aは1です');
} else if (a == 2) {
console.log('aは2です');
} else if (a == 3) {
console.log('aは3です');
} else if (a == 4) {
console.log('aは4です');
}
else if
の数が多いときはswitch
文を使用することが多いです。
上記の処理をswitch
に置き換えると以下のようになります。
a
を基準に各case
の値と比較を行っていきます。
どのcase
にも当てはまらなかった場合はdefault
の処理が実行されます。
var a = 2;
switch (a) {
case 1:
console.log('aは1です');
break;
case 2:
console.log('aは2です');
break;
case 3:
console.log('aは3です');
break;
case 4:
console.log('aは4です');
break;
default:
console.log('aは1,2,3,4以外です');
break;
}
// 実行結果
// aは2です
switch 値A
とcase 値B
の値がイコールの場合に以降の処理が実行されます。
ここでいうイコールとは、型も含めて完全に一致する場合を指します。
例えば以下のようにa
が文字列の場合、case
の値も文字列にする必要があります。
var a = '2'; // 文字列
switch (a) {
case 1:
console.log('aは1です');
break;
case 2: // 数値のため不一致
console.log('aは2です');
break;
case '2':
console.log('aは文字列の2です');
break;
case 3:
console.log('aは3です');
break;
case 4:
console.log('aは4です');
break;
default:
console.log('aは1,2,3,4以外です');
break;
}
// 実行結果
// aは文字列の2です
if
文の比較でもswitch
文と同じように型まで含めて比較したい場合は以下のようイコールを3つ使用します。
if (a === 2) {
console.log('aは数字の2です。');
}
if (a !== 2) {
console.log('aは数字の2ではありません。');
}
JavaScript
ではcase
処理の最後にbreak
コマンドを追加しなければ次のcase
処理も実行されてしまいます。
以下の例では、case 2
の処理の最後にbreak
がないため、以降のcase 3
,case 4
,default
の処理も実行されてしまいます。
breakがない場合
var a = 2;
switch (a) {
case 1:
console.log('aは1です');
case 2:
console.log('aは2です');
case 3:
console.log('aは3です');
case 4:
console.log('aは4です');
default:
console.log('aは1,2,3,4以外です');
}
// 実行結果
// aは2です
// aは3です
// aは4です
// aは1,2,3,4以外です