web-dev-qa-db-ja.com

jshintは「 'case'の前に 'break'ステートメントが必要です」をスローします

こんにちは私のフレームワークがjshintを使用してjavascriptコードを検証しているときに問題が発生しています。 breakステートメントなしでswitch-caseを意図的に使用しましたが、jshintチェック時にコードのこの部分がエラーとしてキャプチャされます。私のコードは以下のようなものです。

    switch (<no>){
    case 1:
        // does something
    case 2:
        //does something more
    default:
        // does something even more
   }

Error from 'jshint' is like Line 203 character 41: Expected a 'break' statement before 'case'.それを避ける方法についての考えは?それとも、このシナリオでスイッチケースを使用するのは悪い習慣ですか?

55
sakthisundar

コピー&ペースト ドキュメントから

Switchステートメント

デフォルトでは、switchステートメント内でbreakまたはreturnステートメントを省略すると、JSHintは警告を出します。

[...]

自分が何をしているのか本当にわかっている場合は、/* falls through */コメント

あなたの場合:

switch (<no>) {
  case 1:
    // does something
    /* falls through */
  case 2:
    //does something more
    /* falls through */
  default:
    // does something even more
}
117

正確には、breaksはこの例のようにまったく不要な場合があります

function mapX(x){
  switch (x){
    case 1:
      return A;
    case 2:
      return B;
    default:
      return C;
  }
}

この場合、breakの後にreturnがあれば、 JS Standard は警告、つまりUnreachable code

JshintとJS Standardを調整しようとするのは難しいですが、前述のように、解決策は

function mapX(x){
  switch (x){
    case 1:
      return A;
      /* falls through */
    case 2:
      return B;
      /* falls through */
    default:
      return C;
  }
}