Rolf B: Frage zum Wiki-Artikel „Funktion“

Beitrag lesen

problematische Seite

Hallo alle,

der verlinkte Wiki-Artikel sagt, dass dieser Code verboten sei:

if (a > 4) {                // Untergeordneter Anweisungsblock beginnt
   function berechne(q) {   // Nicht erlaubt!
      return q*4;
   }
} else {
   function berechne(q) {   // Nicht erlaubt!
      return q*7;
   }
}

Begründung: Wegen des Hoistings käme es zu einer Namenskollision.

Ich habe das gerade in Chrome probiert, und stelle fest:

  • die Funktion wird nicht vor die geschweifte Klammer gehoben, in der sie definiert ist
  • Die Funktion ist hinter der geschweiften Klammer, in der sie definiert wurde, immer noch sichtbar (d.h. wird korrekt im function scope definiert und nicht lokal im Anweisungsblock)
  • abhängig vom Wert von a steht beim Aufruf der passende Funktionsbody zur Verfügung.

Ist das neu in Chrome? Ist das nur in Chrome?

Dass es programmierte Sch... ist, will ich nicht abstreiten.

Rolf

--
sumpsi - posui - obstruxi