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
sumpsi - posui - obstruxi