0

JSHintを介してコードを実行していますが、次のエラーが発生しています。

これswitchif

このコード ブロックについて:

switch(true)
{
    case Major === 0 && Minor === 0 && Patch < 433:
        upgraded = upgraded.replace(/(\s+)skill(\d)=/gm, '$1section_8_$2_body=');
    /* falls through */
    case Major === 0 && Minor === 0 && Patch < 442:
        upgraded = upgraded.replace(/test=/gm, 'void=');
    /* falls through */
    case Major === 0 && Minor === 0 && Patch < 459:
        upgraded = upgraded.replace(/another=/gm, 'void=');
    /* falls through */
}

Google からこの Github の問題を見つけましたが、1 つしかなかったことが原因のようですcase

どうすればこれを修正できますか? これswitchif. 私が使用しているという事実は、それと関係があるのswitch(true)でしょうか?

余談ですが、オンライン バージョンではコードがうまくリントします (私は Notepad++ プラグインを使用しています)。

4

2 に答える 2

-1

ステートメントは、可能な値の既知の有限リスト (列挙型)switchに対して単一の変数または式をテストするためのものです。

var userColor = 'red';

switch(userColor){
  case 'red':
      alert('Stop');
      break;
  case 'yellow':
      alert('Slow');
      break;
  case 'green':
      alert('Go');
      break;
}

そのコードは本質的に次のショートカットです。

if(userColor == 'red'){
  alert('Stop');
}else if(userColor == 'yellow'){
  alert('Slow');
}else if(userColor == 'green'){
  alert('Go')
}

あなたが提供したコードではPatch、残りの変数は常に 0 であるため、唯一の決定要因は の値です。

コードを一連の if/else ステートメントにリファクタリングすることをお勧めします

if(Patch < 433){
  //...
}else if(Patch < 442){
  //...
}else if(Patch < 459){
  //...
}else{
  //... fall through
}
于 2013-09-25T22:27:22.073 に答える