web-dev-qa-db-fra.com

jshint jette une "déclaration" attendue "avant" cas "

Bonjour, je rencontre un problème lorsque mon framework utilise jshint pour valider mon code javascript. J'ai utilisé intentionnellement switch-case sans instruction break, mais cette partie du code est capturée comme une erreur lorsque jshint vérifie. Mon code est quelque chose comme ci-dessous.

    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'. Avez-vous des idées sur la façon de l'éviter? ou est-ce une mauvaise pratique d’utiliser des cas de commutation dans ce scénario?

53
sakthisundar

Copier/coller depuis la documentation :

Changer les instructions

Par défaut, JSHint vous avertit lorsque vous omettez des instructions break ou return dans les instructions switch:

[...]

Si vous savez vraiment ce que vous faites, vous pouvez dire à JSHint que vous voulait que le bloc de cas tombe en ajoutant un commentaire /* falls through */

Donc dans votre cas:

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

Exactement, breaks peut être totalement superflu, comme dans cet exemple

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

Dans ce cas, si vous aviez eu une break après return, JS Standard émettrait un avertissement, à savoir Unreachable code.

Essayer de concilier jshint et JS Standard est délicat, mais comme indiqué, la solution serait

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