Moin.
Das Problem wurde ja bereits geklärt. Ich bin übrigens auch schon darüber gestolpert, denn so abwegig ist Michaels Annahme nicht.
JavaScript interpretiert offensichtlich
var name = value;
genauso wie
var name;
name = value;
und setzt dies in folgenden Pseudo-Code um (der so in JavaScript nicht möglich ist, da auf das Kontext-Objekt nicht zugegriffen werden kann):
context.createVar('name');
context.setVar('name', value);
Ebenso wäre aber auch denkbar,
var name = value;
als
context.createAndSetVar('name', value);
und entsprechend
var name;
name = value;
als
context.createAndSetVar('name', undefined);
context.setVar('name', value);
zu interpretieren, was unterschiedliche Ergebnisse zur Folge hätte, wenn value selbst auf eine Variable names 'name' zugreift, da ja Argumente in JavaScript strikt, d.h. vor Funktionsaufruf evaluiert werden.
Christoph