dedlfix: Objekt in Array so zulässig?

Beitrag lesen

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 zwischen

if (isset(foo.bar))

und

if (foo.bar != undefined)

In JS würde man als isset-Äquivalent allerdings eher hasOwnProperty 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.

0 47

Objekt in Array so zulässig?

Silke Seide
  • javascript
  1. 0
    pl
    1. 0
      Silke Seide
  2. 0
    dedlfix
    1. 0
      ursus contionabundo
      1. 0
        dedlfix
        1. 0
          pl
          1. 0
            dedlfix
            1. 0
              pl
              1. 5
                Orlok
                • javascript
                • programmiertechnik
                1. 0
                  ursus contionabundo
                  1. 0
                    pl
                    1. 0
                      beatovich
                      1. 0
                        pl
                  2. 0
                    mark
                  3. 0
                    dedlfix
                    1. 0
                      Christian Kruse
                      1. 0
                        dedlfix
                        1. 0
                          Christian Kruse
                          1. 0
                            dedlfix
                            1. 0
                              Christian Kruse
                              1. 0
                                dedlfix
                                1. 0
                                  Christian Kruse
                                  1. 0
                                    1unitedpower
                                    1. 0
                                      1unitedpower
                                2. 2
                                  Rolf B
                                  1. 0
                                    Christian Kruse
                                  2. 0
                                    dedlfix
                                    1. 0
                                      Christian Kruse
                                      1. 0
                                        dedlfix
                                        1. 0
                                          Christian Kruse
                                    2. 0
                                      Rolf B
                              2. 0
                                dedlfix
                                1. 0
                                  Christian Kruse
                      2. 3
                        Christian Kruse
                        1. 0
                          dedlfix
                          1. -1
                            pl
                          2. 0
                            ursus contionabundo
                            1. 1
                              dedlfix
                        2. 0
                          Rolf B
                  4. 0
                    1unitedpower
                2. 0
                  1unitedpower
        2. 0
          ursus contionabundo
          1. 0
            pl
            1. 0

              Alter Perl-Pseudohash in modernem JS ...

              ursus contionabundo
              • javascript
              • meinung
              1. 0
                pl
    2. 0
      Silke Seide