Der Martin: Was zum Geier hab ich da aufgeführt? Javascript Objekte und andere Irrsinnigkeiten...

Beitrag lesen

Hallo,

...und was mit:

GLOBAL_VARS.einObj = {}.i = 0;

unter der Haube passiert, habe ich zugegeben nicht ganz verstanden. Rechts assoziativ wird diese Zauberformel umgewandelt zu

GLOBAL_VARS.einObj = {i = 0};

nein, die geschweiften Klammern wären so syntaktisch falsch. Man kann aber tatsächlich (runde!) Klammern setzen, um es etwas deutlicher zu machen:

GLOBAL_VARS.einObj = ({}.i = 0);

Zuerst wird der Ausdruck in der Klammer ausgewertet. Also ein leeres Objekt erzeugt, dem eine Eigenschaft i angehängt und dieser der Wert 0 zugewiesen. Der Zuweisungs-Operator hat aber auch einen Rückgabewert, und der ist relevant, wenn die Zuweisung innerhalb eines Ausdrucks vorkommt, wie hier. Der Rückgabewert des Zuweisungs-Operators ist der zugewiesene Wert, also 0. Dieser Wert 0 wird nun an GLOBAL_VARS.einObj zugewiesen, und das eben erzeugte Objekt fällt auf den Boden und zerschellt, weil es keinen Namen hat, mit dem man es ansprechen könnte.

Live long and pros healthy,
 Martin

--
Klein φ macht auch Mist.