Orlok: Variablendeklaration

Beitrag lesen

Hallo Camping_RIDER

Mir ist in einem der Beispiele deines Artikels etwas aufgefallen, was auch in anderen Artikeln und auch Antworten hier im Forum immer wieder zu lesen ist, und was mir zumindest in dem Fall, dass es sich bei dem jeweiligen Adressaten um Anfänger handelt, als schlechte Praxis erscheint.

function () {
  if (condition) {
    var foo = bar;
    for (var i = 0; i < baz; i++) {
      // do something
    }
  }
};

In diesem von deinem Code abstrahierten Beispiel haben wir eine Funktion, darin eine bedingte Anweisung, darin eine Variablendefinition und eine Schleife, bei deren Initialisierung ebenfalls eine Variable definiert wird, was sich aus Anfängersicht in etwa so liest:

in der Funktion
  wenn die Bedingung zutrifft
    deklariere eine Variable foo und weise ihr den Wert bar zu
    für die Schleife
      deklariere Variable i und weise den Wert 0 zu
      usw.

Wie du sicher selbst weißt, ist das aber nicht das, was wirklich da steht, denn das würde sich statt dessen stark vereinfacht ausgedrückt eher so lesen:

beim Funktionsaufruf
  deklariere eine lokale Variable mit dem Bezeichner foo und weise den Wert undefined zu
  deklariere eine lokale Variable mit dem Bezeichner i und weise den Wert undefined zu
  wenn die Bedingung zutrifft
    weise der lokalen Variable mit dem Bezeichner foo den Wert bar zu
    bei der initialisierung der Schleife
      weise der lokalen Variable mit dem Bezeichner i den Wert 0 zu
      usw.

Die Deklaration von Variablen innerhalb bedingter Anweisungen oder bei der Initialisierung von Schleifen ist meiner Ansicht nach dazu geeignet, bei Anfängern den Eindruck zu erwecken, die jeweiligen Variablen würden „nur in Folge“ der bedingten Anweisung oder „nur für“ die Schleife deklariert werden, was natürlich nicht der Fall ist.

Bezogen auf dein Codebeispiel hätte diese falsche Annahme zwar keine Auswirkungen, aber ich halte es grundsätzlich für ratsam, sofern diesbezüglich keine zusätzlichen Erklärungen mitgeliefert werden und falls ein entsprechendes Beispiel sich auch an Anfänger richtet, dem Umstand Rechnung zu tragen, dass es in JavaScript für mittels var deklarierte Variablen neben dem globalen nur den durch den Ausführungskontext von Funktionen bereitgestellten Geltungsbereich gibt, weshalb ich es besser fände, wenn in Codebeispielen die lokalen Variablen gleich zu Beginn des Funktionskörpers deklariert und Konstrukte wie in deinem Beispiel vermieden würden.

Aber das ist natürlich nur meine Ansicht und du kannst das persönlich gerne anders handhaben. ;-)

Viele Grüße,

Orlok

--
„Das Wesentliche einer Kerze ist nicht das Wachs, das seine Spuren hinterlässt, sondern das Licht.“ Antoine de Saint-Exupéry
1 55

Info: neuer Artikel zum Checkbox-Hack

Camping_RIDER
  • css
  • selfhtml-wiki
  • zur info
  1. 0
    Matthias Scharwies
  2. 0
    Gunnar Bittersmann
    1. 0
      Camping_RIDER
      1. 0
        Matthias Apsel
        1. 0
          Camping_RIDER
      2. 0
        Gunnar Bittersmann
        1. 0
          Camping_RIDER
          1. 0
            Gunnar Bittersmann
    2. 0
      Camping_RIDER
      1. 1
        Gunnar Bittersmann
        • html
        • selfhtml-wiki
        • zur info
        1. 0

          IE6-Warnung gefällig?

          Camping_RIDER
          1. 2
            Christian Kruse
            1. 0
              Auge
              • browser
              • html
              • selfhtml-wiki
              1. 0
                Christian Kruse
                1. 0
                  Auge
                  1. 0
                    Christian Kruse
                    1. 0
                      Auge
                      • browser
                      • selfhtml-wiki
                      1. 0
                        Christian Kruse
                      2. 0
                        Camping_RIDER
                        1. 0
                          Auge
                          • browser
                    2. 1
                      JürgenB
                      1. 0
                        Christian Kruse
            2. 0
              Camping_RIDER
          2. 0
            Jörg Reinholz
            1. 0
              Auge
              • browser
              • mobile
              1. 0
                marctrix
            2. 0
              Der Martin
              1. 0
                marctrix
                1. 0
                  Der Martin
                  1. 0
                    marctrix
                    1. 0
                      Der Martin
                      1. 0
                        marctrix
                        1. 0
                          Der Martin
                          1. 0
                            marctrix
                          2. 1

                            Spaß mit Siri

                            Gunnar Bittersmann
                            • humor
                            1. 0
                              marctrix
                              1. 0
                                Tabellenkalk
                                1. 0
                                  marctrix
            3. 0
              marctrix
    3. 1

      Polyfill - erster Versuch

      Camping_RIDER
      1. 0
        Matthias Apsel
        1. 0
          Camping_RIDER
      2. 0

        Bugfix jetzt im Artikel

        Camping_RIDER
  3. 0
    marctrix
  4. 0

    Verrückter Bug oder meine Blindheit?

    Camping_RIDER
    • bug
    • css
    • selfhtml-wiki
  5. 1

    Variablendeklaration

    Orlok
    • javascript
    1. 0
      Camping_RIDER
      1. 0
        Orlok
        1. 0
          Camping_RIDER
        2. 0
          dedlfix
    2. 0
      dedlfix
      1. 0
        Camping_RIDER
        1. 0
          dedlfix
          1. 0
            Camping_RIDER