JavaScript: var vs. let

Ich muss gestehen, dass ich bis heute das Schlüsselwort let unter JavaScript noch nie gehört habe. Wie ich jetzt dazu komme? Ich lerne gerade ein wenig Swift und dort gibt es das Schlüsselwort auch – verhält sich aber komplett anders. Ich bin nur über die JavaScript-Lösung gestolpert, als ich Google danach bemüht hatte.

Aber nun zum eigentlichen Thema: Wie unterscheidet sich var von let? Mit beiden Schlüsselworten kann man neue Variablen deklarieren.

Globale deklaration

Benutzt man diese Schlüsselwörter außerhalb von Funktionen, verhalten sie sich exakt identisch. Beide Zeilen führen hier also zum gleichen Ergebnis:

Innerhalb Funktionen

Das wird jetzt etwas verwundern, aber auch hier sind die beiden Schlüsselwörter komplett identisch zu verstehen.

Blocks / Blöcke

Hier kommen jetzt die Stärken von let zum tragen. Außerhalb von for-Schleifen ist die Variable auf einmal nicht mehr verfügbar. Für mich auf jeden Fall erstrebenswert und das schönere Verhalten.

Ich denke, dass es durch das Beispiel sehr deutlich wird, was es mit dem Schlüsselwort auf sich hat. Total genial finde ich auch das Feature, dass man Variablen extra für einen bestimmten Scope deklarieren kann:

Fazit

Für eine sauberere Programmierung würde ich eigentlich immer die Nutzung von let innerhalb von Blöcken empfehlen. Dann kommt man gar nicht erst in die Verlegenheit, Variablen zu nutzen, welche in einem anderen Scope definiert wurden.Ich kann es eigentlich überhaupt nicht leiden, wenn Variablen auf einmal nach einer Schleife noch verfügbar sind. Das ist einfach unschön und diese zu verwenden hat mit guter Programmierung auch wenig zu tun. Aber leider lässt man ältere Browser damit definitiv auf der Strecke und die Seite ist auf einmal nicht mehr lauffähig.

Gut, für den IE6 optimieren mittlerweile eh die wenigsten (hoffe ich zumindest) – aber für das bisschen an Mehrwert während der Entwicklung, würde ich das Risiko auf mich nehmen und let einfach nie benutzen.

Über

Jahrgang 87, gelernter Softwareentwickler und fast ein Jahrzehnt Erfahrung im Bereich Web-Entwicklung mit PHP und Web-Design. Diese Eigenschaften machen mich zu einem geeigneten und geschätzten Ansprechpartner für die Umsetzung Ihres Projektes. Weiterhin bin ich seit Ende 2013 Magento Certified Developer.