Tach!
Eine Lösung wäre vielleicht à la PHPs Sprachkonstrukt
isset()
. Das greift nicht wirklich zu, sondern prüft die Existenz und wirft dabei auch keinen Fehler. Aber was genau wäre dabei der Unterschied zwischenif (isset(foo.bar))
und
if (foo.bar != undefined)
In JS würde man als
isset
-Äquivalent allerdings eherhasOwnProperty
benutzen:if(foo.hasOwnProperty('bar'))
Ja, das ist auch eine Möglichkeit, solange man mit den direkten Eigenschaften zufrieden ist, was wohl meist der Fall ist.
Denn:
const foo = { bar: undefined }; console.log(foo.bar !== undefined); console.log(foo.hasOwnProperty('bar')); delete foo.bar; console.log(foo.hasOwnProperty('bar'));
Das ist eine zu beachtende Besonderheit. Aber der Unterschied zwischen einem undefined bei einer nicht vorhandenen Eigenschaft und einem undefined als Wert in einer vorhandenen Eigenschaft ist praktisch nicht vorhanden. Man will ja im Allgemeinen mit dem Wert arbeiten und nicht mit dem Fakt der Existenz einer Eigenschaft. Insofern würde ich eher auf undefined (oder meist falsy) prüfen statt mit hasOwnProperty(), weil mir ein true bei einem folgenden Lesevorgang auf den Wert undefined auch nicht weiter hilft.
Übrigens, wenn der Wert einer Eigenschaft in PHP null ist, liefert isset() auch false.
dedlfix.