... es bedeutet nicht mehr und nicht weniger als if(a){return a}else{return b}.
also eleganter formuliert eigentlich (a ? a : b), gelle? Das wäre, im Gegensatz zu deiner Umschreibung mit dem if-Statement, dann auch syntaktisch entsprechend, weil es als Ausdruck überall vorkommen darf.
Exakt, und wirklich elegant formuliert, könnte von mir sein ;)
Für den Fall, dass a nicht definiert ist, will der Ausdruck also das erste Element eines leeren Arrays zurückgeben - ist das denn definiert?
;-)
In gewisser Weise ja, es ist ein Wert vom Typ 'undefined', was als Schleifenbedingung ein gültiger Ausdruck ist: Die Bedingung ist dann halt nicht erfüllt.
Wenn man nur a[0] schreibt, und a ist bereits vom Typ 'undefined', dann ist a[0] nicht mal mehr das, sondern der ganze Ausdruck ungültig: Es kommt dann zum Laufzeitfehler.
Gruß, Don P