LoginSignup
13
8

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-06-22

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

13
8
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
8