Читать книгу JavaScript für Ungeduldige - Cay Horstmann - Страница 45
Vorsicht
ОглавлениеWenn es beim Parsen unklar ist, ob eine öffnende geschweifte Klammer ein Objektliteral oder eine Blockanweisung einleitet, wird davon ausgegangen, dass eine Blockanweisung vorliegt. Geben Sie als Beispiel Folgendes in die Browserkonsole oder Node.js ein:
{} - 1
In diesem Fall wird der leere Block ausgeführt und anschließend der Ausdruck -1 ausgewertet und angezeigt.
Bei dem folgenden Ausdruck geschieht jedoch etwas anderes:
1 - {}
Hier wird {} als ein leeres Objekt aufgefasst und in NaN umgewandelt. Anschließend wird das Ergebnis (ebenfalls NaN) angezeigt.
In der Praxis treten solche Mehrdeutigkeiten jedoch nicht auf. Wenn Sie ein Objektliteral erstellen, speichern Sie es gewöhnlich in einer Variablen, übergeben es als Argument oder geben es als Ergebnis zurück. In all diesen Fällen erwartet der Parser keinen Block.
Sollte es Ihnen jemals passieren, dass ein Objektliteral fälschlicherweise als Block geparst wird, können Sie ganz einfach Abhilfe schaffen: Schließen Sie das Objektliteral in runde Klammern ein. Ein Beispiel dafür finden Sie in Abschnitt 1.16, »Destrukturierung«.