molily: Objekt-Literal als Param übergeben -Problem bei Abfrage d. props

Beitrag lesen

Mein Hauptproblem bei einer solchen Wert-Zuweisung einer Variablen
( also var bla = spec.bla || blo ) ist, dass der logische Operator || eine
0 anscheinend als false wertet und wenn als Wert 0 übergeben wird

Der ||-Operator wandelt in Boolean um und testet auf true.
0 ist ein falsy value, er wird bei der Umwandlung in Boolean zu false.

Siehe http://aktuell.de.selfhtml.org/artikel/javascript/objektabfragen/

Kann man das geschickt vermeiden, ohne viel mehr Zeilen durch Fallunterscheidungen mit isNaN oder typeof oder so hinzunehmen zu müssen?

typeof wäre eine Möglichkeit.

in ginge auch noch.

Oder == null, was auf undefined und null zutrifft.

if (!opts) opts = {};
if (!('foo' in opts)) opts.foo = …;
if (!('bar' in opts)) opts.bar = …;
usw.

Das alles von Hand zu schreiben ist tatsächlich Quatsch. So einen Code will man nicht schreiben und nicht lesen. Dafür sollte man eine gute Bibliothek verwenden, z.B. Underscore mit der defaults-Methode. YUI und Prototype bieten m.W. etwas ähnliches.

Und allgemein kann man solche Ausdrücke viel einfacher in der Meta-Sprache CoffeeScript schreiben. Dort gibt es Default-Werte für Parameter und den Existential Operator.

Mathias