Edited at

JavaScriptで、switch case でラベルをカンマで連結したらだめ

More than 1 year has passed since last update.


switch case カンマで複数ラベルつなげる

タイトル通り。だめです。

こんな風に書いても、エラーも出ない。

定数Bしか有効にならないみたいです。

switch (変数) {

case 定数A, 定数B:
break;
default:
break;
}

なにこれ。

下記のようにしましょう。

switch (変数) {

case 定数A:
case 定数B:
break;
default:
break;
}


他言語

swiftとかならOKらしい。

VBのSELECT CASE もOKらしい。


動作確認

下記の、test02(1) の部分で

テストが通過しません。

つまり、

switch (value) {

case 1, 2:

はだめだってこと。


index.html

<!DOCTYPE html>

<html lang="ja">
<head>
<meta charset="utf-8">

<script>

var check = function (a, b, message) {
if (a === b) {
return true;
}
if (typeof message === 'undefined') {
message = '';
} else {
message = 'Test:' + message + '\n';
}
message = message +
'A != B' + '\n' +
'A = ' + a + '\n' +
'B = ' + b;
alert(message);
return false;
};

var test01 = function (value) {
switch (value) {
case 1:
case 2:
return '1 or 2';
default:
return 'other';
}
};

var test02 = function (value) {
switch (value) {
case 1, 2:
return '1 or 2';
default:
return 'other';
}
};

var main = function () {

check('1 or 2', test01(1));
check('1 or 2', test01(2));
check('other', test01(3));

check('1 or 2', test02(1), 'test02(1)');
check('1 or 2', test02(2), 'test02(2)');
check('other', test02(3));

alert('test finish');
};

document.addEventListener("DOMContentLoaded",function(eve){
main();
},false);

</script>

</head><body>

</body></html>


検索しても、switchの複数ラベルを記載しているページも少なく

複数ラベルカンマ接続禁止と書いているページがなかったので

サンプル作って動作確認したので、

投稿しておきました。