Es gibt die const-Definition in Exploring ES6 von Dr. Axel Rauschmayer:
const
funktioniert wie let, aber die von Ihnen deklarierte Variable muss sofort initialisiert werden, mit einem Wert, der danach nicht mehr geändert werden kann . […]const bar = 123; bar = 456; // TypeError: `bar` is read-only
und dann schreibt er
Fallstricke: const macht den Wert nicht unveränderlich
const
bedeutet nur, dass eine Variable immer den gleichen Wert hat, aber nicht, dass der Wert selbst unveränderlich ist oder wird.
Ich bin wenig verwirrt mit dieser Falle. Kann jemand das const
mit dieser Falle klar definieren ?
javascript
ecmascript-6
const
Mukund Kumar
quelle
quelle
const x = "immutable"
ist unveränderlich, weilString
unveränderlich ist.const
verbietet lediglich die Neuzuweisung.Antworten:
MDN fasst es gut zusammen:
Genauer gesagt: const erstellt eine unveränderliche Bindung.
Mit anderen Worten: const gibt Ihnen wie var einen veränderlichen Speicherblock, in dem Sie etwas speichern. Const schreibt jedoch vor, dass Sie sich weiterhin auf denselben Speicherabschnitt beziehen müssen. Sie können die Variable keinem anderen Speicherabschnitt zuweisen, da die Variablenreferenz konstant ist.
Um etwas wirklich konstant und unveränderlich zu machen, nachdem Sie es deklariert haben, müssen Sie so etwas wie verwenden
Object.freeze()
. Dies ist jedoch flach und funktioniert nur bei Schlüssel / Wert-Paaren. Das Einfrieren eines gesamten Objekts erfordert etwas mehr Aufwand. Dies immer wieder auf performante Weise zu tun, ist noch schwieriger. Wenn Sie das wirklich brauchen, würde ich empfehlen, sich etwas wie Immutable.js anzuschauenquelle
var x
iststruct Object *x
,const x
ist a astruct Object *const x
. Der Zeiger kann nicht geändert werden. das Ding, auf das es zeigt, kann.Wenn Sie etwas
const
in JavaScript erstellen, können Sie die Variable selbst nicht neu zuweisen, um auf etwas anderes zu verweisen. Die Variable kann jedoch weiterhin auf ein veränderbares Objekt verweisen.Bei Grundelementen wie Zeichenfolgen und Zahlen
const
ist dies einfacher zu verstehen, da Sie die Werte nicht mutieren, sondern der Variablen stattdessen einen neuen Wert zuweisen.quelle
Nachbinden
const
undlet
Deklarationen steuern, ob Neubindungen (auch als Neuzuweisungen bezeichnet) zwischen Bezeichnern und Werten zulässig sind:Unveränderlichkeit
Die Unveränderlichkeit wird auf Typebene kontrolliert.
Object
ist ein veränderlicher Typ, währendString
es sich um einen unveränderlichen Typ handelt:quelle
const bedeutet: Sie können den ursprünglich zugewiesenen Wert nicht ändern.
Definieren Sie zunächst, was ein Wert in js ist. Der Wert kann sein: Boolesche Werte, Zeichenfolgen, Zahlen, Objekte, Funktionen und undefinierte Werte.
Wie: Leute rufen dich mit deinem Namen an, es ändert sich nicht. Sie ziehen sich jedoch um. Die Bindung zwischen den Menschen und Ihnen ist Ihr Name. Der Rest kann sich ändern. Entschuldigung für das seltsame Beispiel.
Lassen Sie mich einige Beispiele nennen:
Wie Sie sehen können , ist dies kein Fehler , es sei denn, Sie ändern den "ersten" zugewiesenen Wert nicht in eine Konstante. Wenn Sie versuchen, den ersten zugewiesenen Wert in einen anderen zu ändern, wird er wütend und gibt einen Fehler aus.
Dies ist also das zweite, was Sie bei der Verwendung wissen könnten
const
. Das heißt, es sollte auf einen Wert in seiner Deklaration initialisiert werden, sonst wird es wütend.quelle
ES6
/ES2015
const
Schlüsselwort:Das
const
Schlüsselwort wird verwendet, um eine Variable mit Blockbereich zu deklarieren (wie beim Deklarieren mitlet
). Der Unterschied zwischen der Deklaration einer Variablen mitconst
undlet
ist folgender:const
kann nicht neu zugewiesen werden .const
muss zugewiesen , wenn erklärt . Dies ist eine logische Konsequenz des vorherigen Punktes, da eine mit deklarierte Variableconst
nicht neu zugewiesen werden kann. Deshalb müssen wir sie genau einmal zuweisen, wenn wir die Variable deklarieren .Beispiel:
Im obigen Beispiel können wir Folgendes beobachten:
myVariable
deklarierte Variablelet
kann zuerst deklariert und dann zugewiesen werden.myConstant
deklarierteconst
muss gleichzeitig deklariert und zugewiesen werden.myConstant
zuzuweisen, wird der folgende Fehler angezeigt:Vorsichtsmaßnahme: Die mit zugewiesene Variable
const
ist weiterhin veränderbar:Eine mit
const
einfach deklarierte Variable kann nicht neu zugewiesen werden, sie ist jedoch weiterhin veränderbar . Veränderbar zu sein bedeutet, dass die Datenvariable (Objekt, Array, Karte usw.), die derconst
Variablen zugewiesen wurde, noch geändert (dh mutiert) werden kann. Beispiele für Mutationen sind:Wenn Sie wirklich möchten, dass ein Objekt nicht veränderbar ist, müssen Sie so etwas wie verwenden
Object.freeze()
. Dies ist eine Methode, die ein Objekt einfriert. Ein eingefrorenes Objekt kann nicht mehr geändert und es können keine neuen Eigenschaften hinzugefügt werden.Beispiel:
quelle