2016-08-05 53 views
0

Dieser Code StückJavascript: weird Fehler Syntax, wenn "label" mit

abc: 
var i=0; 
for (; i < 10; ++i) 
    if (i == 8) break abc; 

Laufzeitausnahme hat, sagen

SyntaxError: Undefined label 'abc' 

Wenn ich die Linie von

var i=0; 

Dann entfernen Sie es OK.

Das ist komisch für mich. Benötigt JavaScript ein Label, wenn es von "break"/"continue" verwendet wird, ist die Definition nur für den folgenden Codeblock verfügbar oder nicht zugänglich? Danke.

+1

Ich glaube, dass das Etikett über der Schleife auf der Linie sein muss. Versuchen Sie, die 'var i = 0;' über das Label zu setzen. –

Antwort

2

Von MDN:

Die break-Anweisung muss innerhalb der referenzierten Etikett verschachtelt werden.

Also ja.

+0

@Rajesh - Ja, das OP hat das bemerkt und es in der Frage erwähnt. – Quentin

0

Ihr Etikett muss direkt vor der Schleife sein:

var i=0; 
abc: 
for (; i < 10; ++i) 
    if (i == 8) break abc;