2016-09-23 2 views
1

Was bedeutet folgender Code? (Es ist nicht json - es Code, der nicht Fehler generiert durch js Interpreter)Javascript seltsame Syntax, die funktioniert - aber wie?

foo: 5 

Der Grund für die Frage ist, wie folgt. In Pfeilfunktionsbeispielen gibt es eine, die die Verwirrung zwischen json und Codesatzsyntax zeigt:

var func =() => { foo: 1 }; 

Die func() gibt nicht definiert und den obigen Code nicht ausfällt. Ich habe versucht, nur den foo: 5-Code als einzigen Code in einem js-Modul zu setzen - und es funktioniert ... Ich weiß nichts über einen ':' - Operator, weder über Labels in js.

+1

Es ist ein Label. Das ist alles. –

+0

Mögliches Duplikat von [Objekt von der Pfeilfunktion zurückgeben] (http://stackoverflow.com/questions/35551000/return-object-from-arrow-function) –

Antwort

2

Es ist ein JavaScript-Etikett: documentation here.

Sie können eine Bezeichnung verwenden, um eine Schleife zu identifizieren, und dann die Anweisungen break oder continue verwenden, um anzugeben, ob ein Programm die Schleife unterbrechen oder die Ausführung fortsetzen soll.

Beachten Sie, dass JavaScript keine goto-Anweisung hat, Sie können nur Labels mit break oder continue verwenden.

Beispiel der Verwendung (von MDN)

var itemsPassed = 0; 
var i, j; 

top: 
for (i = 0; i < items.length; i++){ 
    for (j = 0; j < tests.length; j++) { 
    if (!tests[j].pass(items[i])) { 
     continue top; 
    } 
    } 

    itemsPassed++; 
} 
+0

Laut der zitierten Dokumentation ist das JS-Label nur für die Schleife relevant. In meinem Beispiel folgt dem Label keine Schleife. Aber es ist immer noch Gesetzbuch. – dzilbers

+0

@dilbers Wenn Sie die Dokumentation weiter lesen, heißt es, dass Sie Blöcke (Abschnitt: "Verwenden eines beschrifteten Blocks mit Pause") und sogar Funktionen verwenden können. Der Javascript-Parser erwartet, dass ein Ausdruck dem Label folgt. Es sei denn, Sie befinden sich im strikten Modus. In diesem Fall wird das, was folgen kann, begrenzt. –

+0

Ich habe jetzt in MDN und in ECMA Spezifikationen über beschriftete Aussage geschaut. Es ist merkwürdig (warum Etiketten, die nicht an eine Schleife oder einen Block angrenzen, überhaupt akzeptabel sind, wenn es keinen Grund für ihre Verwendung gibt?), Aber es ist wahr ... – dzilbers