JavaScript Whitespace-Syntaxfehler

8

Warum verursacht dies einen Syntaxfehler für die return-Anweisung:

%Vor%

Während dies nicht:

%Vor%

Warum gibt es einen Unterschied?

    
gruner 11.10.2009, 05:33
quelle

1 Antwort

21

Es geht nicht um den Whitespace, es geht um das automatische Einfügen von Semikolons durch JavaScript.

Die ECMAScript-Spezifikation sagt

  

Bestimmte ECMAScript-Anweisungen (leer   Anweisung, variable Anweisung,   Ausdruckserklärung, Do-While   Anweisung, Continue-Anweisung, Pause   Anweisung, return-Anweisung und throw   Anweisung) muss mit beendet werden   Semikolons. Solche Semikolons können immer   erscheinen explizit im Quelltext.   Der Bequemlichkeit halber jedoch, wie z   Semikolons können weggelassen werden   Quelltext in bestimmten Situationen.   Diese Situationen werden beschrieben durch   sagen, dass Semikolons sind   automatisch in die Quelle eingefügt   Code-Token-Stream in diesen Situationen.

Dies bedeutet, dass Ihr Code

%Vor%

wird als

übersetzt %Vor%

Damit ist FOO nach der Ausführung der Funktion undefiniert.

Für Ihren anderen Code wird JS kein Semikolon einfügen und es wird korrekt funktionieren. JS wird ein Semikolon nach Ihrem literalen Objekt einfügen und es sollte gut funktionieren. [EDIT: Korrektur wie von kagnax angegeben]

Dies bedeutet, dass Sie Ihre Anweisungen immer mit Semikolon beenden sollten. Wenn das JS-Engine-Semikolon eingefügt wird, können sehr kleine Fehler auftreten, deren Debuggen Stunden in Anspruch nimmt. Sie können ein Tool wie JSLint verwenden, das Sie vor fehlenden Semikolons warnt.

    
SolutionYogi 11.10.2009, 05:38
quelle