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