Hallo,
var xy = foo || bar;
in JS genauso gehandhabt wird, dass wenn "foo" nicht existiert eben "bar" genommen wird
Nein, das kann man nie dazu benutzen, um abzufragen, ob eine Variable nicht *existiert*.
Verallgemeinert: Man kann nie Boolean(variable) verwenden, um abzufragen, ob eine Variable existiert. Denn das wird intern bei if (...) angewendet oder halt bei Operatoren wie && oder ||.
foo || bar verwendet man z.B. bei Variablen, die nicht gesetzt wurden. Das mit var foo, bar; oder mit function func (foo, bar) deklarierte, ohne dass ihnen ein Wert zugewiesen wurde. Beide haben dann den Wert Typ Undefined. Das ist etwas anderes als »nicht existent sein«.
Warum das einen Unterschied macht: Wenn man die Identifier Reference foo notiert und es existiert unter dem Namen foo nichts, dann gibts beim Auflösen dieses Namens einen ReferenceError. Wenn foo existiert, aber vom Typ Undefined ist, dann ergibt das Auflösen einfach den Wert undefined und kein Error wird ausgelöst.
Mathias