Hallo,
var o = { p : undefined };
"p" in o // ergibt true
"x" in o // ergibt false
>
> Absichtlich würde ich deshalb nicht mit undefined-Werten arbeiten.
Ich schon. Gerade die Tatsache `("p" in o && !o["p"]) === true`{:.language-javascript} nütze ich manchmal aus:
Es werden Eigenschaften/Methoden von o angelegt, die manchmal bewußt mit undefined initialisiert sind.
Das bedeutet eben, dass zwar sie \*an dieser Stelle nicht definiert\* sind, aber der Wert von woanders geholt werden soll (z.B. von einem Default-Objekt d).
Dazu werden etwa mit
`for (var p in o) { myObj = o[p]||d[p]; }`{:.language-javascript}
die Eigenschaften durchlaufen und zugeordnet. Natürlich würde das auch mit null funktionieren...
> Wenn etwas gesetzt ist, aber keinen Wert hat, dann sollte man null verwenden.
...aber null steht ja üblicherweise für ein nicht vorhandenes \*Objekt\*.
undefined dagegen ist allgemeiner, und steht für irgend etwas nicht gesetztes.
Gruß, Don P