4 Antworten
Die Leute haben recht, dass `var` problematisch ist, aber diese Sache mit Unveränderlichkeit bei `const` ist nicht ganz so - `const` friert nur die Referenz ein, nicht den Inhalt, also kannst du problemlos ein Objekt oder Array, das mit `const` deklariert wurde, ändern. Was wirklich den Unterschied macht, ist der Scope: `var` ist function-scoped (läuft aus Blöcken raus), während `let` und `const` block-scoped sind (bleiben im Scope eingesperrt, wo sie erstellt wurden). Das verursacht echte Bugs mit `var`, zum Beispiel wenn du es in einem `if` deklarierst und die Variable dann außerhalb auftaucht. Mein Vorschlag ist, `const` standardmäßig zu nutzen, `let` wenn du wirklich neu zuweisen musst, und `var` ganz zu vergessen.
Benutz `var` nicht in neuem Code, ernsthaft. Das ist die alte Art und bringt Scope-Probleme mit sich, die dir später Kopfschmerzen bereiten. Der Hauptunterschied liegt wirklich beim Scope: `var` hat Function-Scope, während `let` und `const` Block-Scope haben. Das bedeutet, wenn du eine Variable mit `var` in einem `if` deklarierst, ist sie außerhalb des Blocks noch zugänglich. Mit `let` und `const` passiert das nicht, die bleiben da eingesperrt.
Zwischen `let` und `const` ist der Unterschied simpel: Mit `let` kannst du den Wert neu zuweisen, mit `const` nicht. Wenn du `const meineVar = 5` deklarierst, kannst du danach nicht `meineVar = 10` machen. Mit `let` funktioniert das problemlos. Klingt nach einer Kleinigkeit, aber es ist praktisch, weil du eine Variable nicht versehentlich änderst. Viele Leute bevorzugen es, standardmäßig `const` zu verwenden und nur auf `let` zu wechseln, wenn sie wirklich neu zuweisen müssen.
In der Praxis: Benutz `const` immer wenn möglich, nimm `let` wenn du den Wert ändern musst, und vergiss `var`. Das ist im Grunde alles. Du findest zwar noch jede Menge alter Code mit `var`, aber für neuen Code macht es keinen Sinn 🤷
Der Scoping-Unterschied, den die anderen erwähnt haben, ist real, aber das Praktischste im Alltag ist tatsächlich die Unveränderlichkeit! Mit `const` stellst du sicher, dass sich die Referenz nicht ändert, was blöde Bugs vermeidet, bei denen jemand (oder du selbst später) versehentlich eine Variable neu zuweist. `Let` ist flexibel, wenn nötig, aber `const` als Standard macht den Code viel vorhersehbarer und sicherer.
In der Praxis ist der Trick, den niemand erwähnt hat, standardmäßig `const` zu verwenden und nur zu `let` zu greifen, wenn du wirklich etwas neu zuweisen musst - so zwingst du dein Gehirn, besser darüber nachzudenken, was veränderbar ist und was nicht, und vermeidest diese nervigen Bugs, wo du eine Variable änderst, ohne es zu bemerken. `var` ist praktisch veraltet, die Leute haben da recht.
Deine Antwort
Anmeldenzum Beantworten.