dedlfix: Objekt in Array so zulässig?

Beitrag lesen

Tach!

Wenn es keine solche Eigenschaft gibt, dann wird einfach undefined zurückgegeben.

Das ist nichts anderes als ein weiterer Designfehler von Javascript. Wenn ich lesend auf etwas zugreife, was es aber nicht gibt, sollte wenigstens eine Warnung kommen.

Wie löst du dann das Problem der Feature-Erkennung in unterschiedlichen Implementierungen? Versetz dich dazu in die Anfangszeit als es try-catch noch nicht gab. Auch damals musste man schon Programme schreiben können, die nicht gleich mit Fehler aussteigen, nur weil der eine Browser eine bestimmte Objekteigenschaft nicht kennt, die in anderen Browsern existiert. Wie testest du das, ohne dass dabei gleich die Konsole vollgemüllt wird oder das Script stirbt?

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)

Javascript hat Möglichkeiten, die Nichtexistenz zu erkennen. Wenn der Programmierer sie nicht nutzt und lieber auf eine Warnung wartet, wenn er ungeprüft auf unbekannte Daten zugreift, sehe ich das nicht als das Problem von Javascript an.

Und es ist ja nicht so, dass gar nichts kommt. Beim weiteren Zugreifen hat man dann auch einen schönen Fehler:

var foo = {};
console.log(foo.bar); // nur undefined
console.log(foo.bar.qux); // Fehler, weil ein undefined keine Eigenschaften hat.

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