2013-09-25 15 views
6
von JSHint ignoriert

Ich bin mit meinem Code durch JSHint und Ich schlage diesen Fehler:Schalter fallen durch

Expected a break statement before case

Auf diesem Code-Block:

switch(true) 
{ 
    // Renames skill1=abc to section_8_1_body=abc 
    case Major === 0 && Minor === 0 && Patch < 433: 
     upgraded = upgraded.replace(/(\s+)skill(\d)=/gm, '$1section_8_$2_body='); 
    /*falls through*/ 

    // Example 
    case Major === 0 && Minor === 0 && Patch < 442: 
     console.log('test'); 
    /*falls through*/ 
} 

Der Code überprüft Versionsinformationen für eine Datei und aktualisiert sie, damit sie mit der neuesten Version der Software kompatibel ist. Es ist daher beabsichtigt, dass die case s durchfallen, so dass eine Datei über mehrere Versionen aktualisiert werden kann.

Allerdings erhalte ich die Fehlermeldung, mit/*falls through* hinzugefügt, obwohl it is supposedly valid.

Wie kann ich zulassen, dass meine case s erfolgreich in JSHint durchfallen?

Antwort

16

JSHint scheint zu erwarten, dass der Kommentar direkt vor der case auf der Linie sein wird.

// Example 
/* falls through */ 
case Major === 0 && Minor === 0 && Patch < 442: 
    console.log('test'); 

Nach der Beschreibung in the source code, es wird das Kommentar sonst nicht bestätigen:

// You can tell JSHint that you don't use break intentionally by 
// adding a comment /* falls through */ on a line just before 
// the next `case`. 
+3

Ah, danke Jonathan! Ich habe versucht, die '// Beispiel'-Zeile zu entfernen, aber ich habe immer noch denselben Fehler gefunden. Das Problem war die Leerzeile zwischen '/ * fällt durch * /' und 'case'. –