Immutable

Ein immutable Wert ist ein Wert, dessen Inhalt nicht geändert werden kann, ohne einen völlig neuen Wert zu erstellen, im Vergleich zu mutablen Werten.

In JavaScript sind primitive Werte unveränderlich — nachdem ein primitiver Wert erstellt wurde, kann er nicht geändert werden, obwohl die Variable, die ihn hält, eine andere Zuweisung erhalten kann. Im Gegensatz dazu sind Objekte und Arrays standardmäßig veränderlich — ihre Eigenschaften und Elemente können geändert werden, ohne dass ein neuer Wert zugewiesen wird.

Es kann vorteilhaft sein, unveränderliche Objekte aus mehreren Gründen zu verwenden:

  • Um die Leistung zu verbessern (kein Planen zukünftiger Änderungen des Objekts)
  • Um den Speicherverbrauch zu reduzieren (Erstellen von Objektreferenzen anstatt das ganze Objekt zu klonen)
  • Thread-Sicherheit (mehrere Threads können dasselbe Objekt referenzieren, ohne sich gegenseitig zu beeinträchtigen)
  • Geringere geistige Belastung für Entwickler (der Zustand des Objekts ändert sich nicht und sein Verhalten bleibt konsistent)

Beachten Sie, dass Sie die Änderbarkeit leicht beweisen können: Ein Objekt ist veränderlich, solange es eine Möglichkeit bietet, seine Eigenschaften zu ändern. Andererseits ist Unveränderlichkeit schwer zu beweisen, wenn es keine Sprachsemantik gibt, um sie zu sichern — es ist eine Frage der Vereinbarung unter Entwicklern. Zum Beispiel ist Object.freeze() eine Methode auf Sprachebene, um ein Objekt in JavaScript unveränderlich zu machen.

Siehe auch