2017-05-04 4 views
2

Heute bekam ich ein seltsames Syntaxproblem und bemerkte etwas Seltsames. Dies wird tatsächlich als gültig kompiliert JS:Warum ist dieses JavaScript gültig?

confusing: { thisWorks: 'why?' } 

Es druckt "warum" auf die Konsole.

Irgendwelche Ideen, warum das ist?

Sie können sie auch in einer Funktion wie diese wickeln:

// calling myFunc() returns undefined 
const myFunc =() => { 
    confusing: { thisWorks: 'why?' } 
}; 

muss eine Ecke von JS, die ich habe gerade noch nie begegnet? Scheint ein seltsames Verhalten, das aus einer Syntax resultiert, die nicht korrekt ist, aber gleichzeitig keinen Fehler verursacht?

+0

Kurz gesagt: Blöcke, Etiketten, Semikolon fehlen. – Bergi

+3

Es ist [Etiketten] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label) und [Blöcke] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referenz/Anweisungen/Block). – Xufox

+0

http://stackoverflow.com/questions/13588747/uncaught-syntaxerror-unexpected-token/ ist der beste doppelte Kandidat, den ich gefunden habe – Bergi

Antwort

1

Okay. Wenn Sie verstehen können, warum diese Anweisung

thisWorks: 'why?' 

Ausgaben "warum?". Wenn nicht lesen - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label

Weiter, wenn Sie wissen, warum diese Aussage

{ thisWorks: 'why?'; } 

Ausgänge 'warum?'. Es sollte keinen Grund geben, nicht zu verstehen, warum diese Aussage

confusing: { thisWorks: 'why?' } 

würde "warum?" Zurückgeben. Hier sind sowohl confusing als auch thisWorks Etiketten.

+0

Sinn macht! Danke für die Erklärung Yasser. –

+0

Gern geschehen :) – Yasser