Help us understand the problem. What is going on with this article?

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

More than 3 years have 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の複数ラベルを記載しているページも少なく
複数ラベルカンマ接続禁止と書いているページがなかったので
サンプル作って動作確認したので、
投稿しておきました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away