Const in JavaScript: Wann soll es verwendet werden und ist es notwendig?

349

Ich bin kürzlich auf das constSchlüsselwort in JavaScript gestoßen. Soweit ich weiß, wird es verwendet, um unveränderliche Variablen zu erstellen , und ich habe getestet, um sicherzustellen, dass es nicht neu definiert werden kann (in Node.js):

const x = 'const';
const x = 'not-const';

// Will give an error: 'constant 'x' has already been defined'

Mir ist klar, dass es noch nicht für alle Browser standardisiert ist - aber ich interessiere mich nur für den Kontext von Node.js V8 , und ich habe festgestellt, dass bestimmte Entwickler / Projekte es stark zu bevorzugen scheinen, wenn das varSchlüsselwort für das verwendet werden könnte gleicher Effekt.

Meine Fragen sind also:

  • Wann ist es angebracht, constanstelle von zu verwenden var?
  • Sollte es jedes Mal verwendet werden, wenn eine Variable deklariert wird, die nicht neu zugewiesen werden soll?
  • Macht es tatsächlich einen Unterschied, ob vares anstelle von constoder umgekehrt verwendet wird?
axdg
quelle
1
Das scheint noch nicht standardisiert zu sein (vielleicht in EC6?). Weitere Informationen dazu finden Sie hier: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Sebastien C.
1
Const hat eine schlechte Leistung, obwohl jsperf.com/const-vs-var-mod-3
Deepu

Antworten:

462

Ihre Fragen haben zwei Aspekte: Was sind die technischen Aspekte der Verwendung constanstelle von varund was sind die menschenbezogenen Aspekte dabei?

Der technische Unterschied ist erheblich. In kompilierten Sprachen wird eine Konstante zur Kompilierungszeit ersetzt, und ihre Verwendung ermöglicht andere Optimierungen wie das Entfernen von totem Code, um die Laufzeiteffizienz des Codes weiter zu erhöhen. Neuere (lose verwendete) JavaScript-Engines kompilieren tatsächlich JS-Code, um eine bessere Leistung zu erzielen. Wenn Sie also das Schlüsselwort const verwenden, werden Sie darüber informiert, dass die oben beschriebenen Optimierungen möglich sind und durchgeführt werden sollten. Dies führt zu einer besseren Leistung.

Der menschenbezogene Aspekt betrifft die Semantik des Schlüsselworts. Eine Variable ist eine Datenstruktur, die Informationen enthält, deren Änderung erwartet wird. Eine Konstante ist eine Datenstruktur, die Informationen enthält, die sich niemals ändern. Wenn es Raum für Fehler gibt, varsollte immer verwendet werden. Es müssen jedoch nicht alle Informationen deklariert werden, die sich während der Laufzeit eines Programms nie ändern const. Wenn sich die Informationen unter anderen Umständen ändern sollten, vargeben Sie dies an, auch wenn die tatsächliche Änderung nicht in Ihrem Code angezeigt wird.

Tibos
quelle
4
Prost, ich nahm an, dass Mozilla / Google JS-Engines ohne Grund keine konstante Unterstützung hinzugefügt hätte. Ich werde sicherstellen, dass gegebenenfalls const verwendet wird.
Axdg
6
constObjekte scheinen veränderlich zu sein, daher bin ich mir nicht sicher, wie streng der JS-Compiler wirklich ist. Vielleicht macht der Modus "Streng verwenden" auch einen Unterschied.
Rudie
9
@ Rudie Die gesuchte Funktion heißt Einfrieren des Objekts. constverhindert nur, dass die "Variable" einem anderen Wert neu zugewiesen wird. const a = {}; a = {};wird im strengen Modus einen Fehler auslösen.
Tibos
Ich verwende const im Allgemeinen anstelle von let für die meisten Variablen, genau wie in Java füge ich den meisten Variablendeklarationen final hinzu.
Codierung
2
If there is room for error, var should always be used. Heute gilt dies nicht mehr, da Tools wie ESLint sofort auf constVerstöße hinweisen .
Vitaly-t
72

Update 2017

Diese Antwort erhält immer noch viel Aufmerksamkeit. Es ist erwähnenswert, dass diese Antwort Anfang 2014 veröffentlicht wurde und sich seitdem viel geändert hat.Unterstützung ist jetzt die Norm. Alle modernen Browser unterstützen jetzt, constso dass die Verwendung ohne Probleme ziemlich sicher sein sollte.


Ursprüngliche Antwort von 2014

Trotz ziemlich guter Browserunterstützung würde ich es vorerst vermeiden, es zu verwenden. Aus dem Artikelconst von MDN über :

Die aktuelle Implementierung von const ist eine Mozilla-spezifische Erweiterung und nicht Teil von ECMAScript 5. Sie wird in Firefox & Chrome (V8) unterstützt. Wenn Sie in Safari 5.1.7 und Opera 12.00 eine Variable mit const in diesen Browsern definieren, können Sie ihren Wert später noch ändern. Es wird in Internet Explorer 6-10 nicht unterstützt, ist jedoch in Internet Explorer 11 enthalten. Das Schlüsselwort const deklariert derzeit die Konstante im Funktionsbereich (wie mit var deklarierte Variablen).

Dann heißt es weiter:

constwird in ECMAScript 6 definiert, jedoch mit unterschiedlicher Semantik. Ähnlich wie bei Variablen, die mit der let-Anweisung deklariert wurden, werden mit const deklarierte Konstanten mit einem Blockbereich versehen.

Wenn Sie verwenden, müssen constSie eine Problemumgehung hinzufügen, um etwas ältere Browser zu unterstützen.

James Donnelly
quelle
6
Tolle Antwort - obwohl ich den Artikel über MDN bereits gelesen habe. Wie gesagt, ich war mehr daran interessiert, ob V8 const tatsächlich anders behandeln würde als var. Ich denke, @Tibos hat das geklärt.
Axdg
James bedankt sich für den Hinweis auf den Support-Aspekt. Imho sollten alle Javascript-Antworten eine Aufschlüsselung der Browserunterstützung enthalten. schön erklärt
Hubson Bropa
4
Hinweis ES6 wurde im August 2014 eingefroren. Im Juli 2015 wurde der Standard offiziell veröffentlicht. Wenn Sie dies jetzt lesen, bedeutet dies, dass Sie die akzeptierte Antwort wie angegeben befolgen sollten, wenn Ihr Code von einer aktuellen Engine verwaltet wird.
Filip Dupanović
Die OP-Frage ist node.js spezifisch
Nicu Surdu
@ NicolaeSurdu sicher. Es ist auch von Januar 2014, so ist wahrscheinlich jetzt im Jahr 2017 größtenteils überflüssig.
James Donnelly
41

Denn warum verwenden const, @ TIBOS Antwort ist großartig.

Aber du hast gesagt:

Soweit ich das beurteilen kann, werden damit unveränderliche Variablen erstellt

Das ist falsch . Das Mutieren einer Variablen unterscheidet sich vom Neuzuweisen:

var hello = 'world' // assigning
hello = 'bonjour!' // reassigning

Mit const können Sie das nicht tun:

const hello = 'world'
hello = 'bonjour!' // error

Sie können Ihre Variable jedoch mutieren:

const marks = [92, 83]
marks.push(95)
console.log(marks) // [92, 83, 95] -> the variable has been mutated.

Jeder Prozess, der den Wert der Variablen ändert, ohne das =Vorzeichen zu verwenden, mutiert die Variable.

Hinweis: +=Zum Beispiel ist ... Neuzuweisung!

var a = 5
a += 2 // is the same as a = a + 2

Das Fazit lautet also: consthindert Sie nicht daran, Variablen zu mutieren , sondern daran, sie neu zuzuweisen .

math2001
quelle
4
Ihre Aussage "Jeder Prozess, der den Wert der Variablen ändert, ohne das =Vorzeichen zu verwenden, wird stummgeschaltet" ist technisch falsch. const marks=[92,83]; marks[2]=95; console.log(marks)Wird zum Beispiel ausgegeben [92, 83, 95]. markswurde über Gleichheitszeichen mutiert.
Chharvey
5
"Aber Sie sagten: << Nach allem, was ich sagen kann, wird es verwendet, um unveränderliche Variablen zu erstellen >> Das ist falsch . Das Mutieren einer Variablen unterscheidet sich vom Neuzuweisen" Nein, ist es nicht. Durch die Neuzuweisung wird die Variable mutiert. Sie sprechen über das Mutieren des Objekts, auf das sich die Referenz in der Variablen bezieht. Das ist eine ganz andere Sache.
TJ Crowder
Ich bin hierher gekommen, weil ich versuche, constim Kontext von Arrays zu verstehen (ähnlich dem verwendeten Beispiel @chharvey). Im Falle const countArray = countup(n - 1); countArray.push(n);der constwird jedes Mal neu zugewiesen. Warum also verwenden constund nicht var?
YCode
1
@YCode Nr. Wenn Sie verwenden const countArray, wird es nie neu zugewiesen. Sie können weiterhin auf das Array pushen, das seine Elemente und Länge ändert, aber wir nennen das keine Neuzuweisung. Sie verwenden constanstelle von letoder, varwenn Sie eine Neuzuweisung verhindern möchten. BTW , wenn Sie keine Neuzuweisung zulassen möchten, letist fast immer besser als var.
Chharvey
@chharvey Danke! Ihre Antwort führte mich zu "Pass by Value vs Pass by Reference", einem neuen und einem seltsamen Konzept - bei dem Wertänderung ≠ Neuzuweisung. Wer weitere Erklärungen benötigt, sollte die Antworten hier überprüfen: stackoverflow.com/q/46131828/5965865
YCode
38

Um die vorherigen Antworten zu integrieren, gibt es einen offensichtlichen Vorteil beim Deklarieren konstanter Variablen, abgesehen vom Leistungsgrund: Wenn Sie versehentlich versuchen, sie im Code zu ändern oder erneut zu deklarieren, ändert das Programm den Wert nicht und gibt keinen Fehler aus.

Vergleichen Sie zum Beispiel:

// Will output 'SECRET'

const x = 'SECRET'
if (x = 'ANOTHER_SECRET') {  // Warning! assigning a value variable in an if condition
    console.log (x)
}

mit:

// Will output 'ANOTHER_SECRET'

var y = 'SECRET'
if (y = 'ANOTHER_SECRET') { 
    console.log (y)
}

oder

// Will throw TypeError: const 'x' has already been declared

const x = "SECRET"

/*  complex code */

var x = 0

mit

// Will reassign y and cause trouble

var y = "SECRET"

/*  complex code */

var y = 0
janesconference
quelle
Sie sollten sagen, dass dieses "unveränderliche" Verhalten nur für Zeichenfolgen und Basistypen gilt. Mit Objekten, Arrays usw. ist es möglich, die Werte zu ändern, aber es ist nicht möglich, ein neues "Objekt" neu zuzuweisen, z. B. const a = ["a", "b"]; a = []; wird einen Fehler werfen, sonst ist es möglich
Fer bis
Sie sollten ein Beispiel haben, in dem Sie versuchen, auch den Wert einer Konstante zu ändern.
Joshua Pinter
Die Verwendung von const ähnelt stark den Zugriffsmodifikatoren. Wahre Unveränderlichkeit ist nicht das Ziel.
StingyJack
32

constist nicht unveränderlich.

Aus dem MDN :

Die const-Deklaration erstellt einen schreibgeschützten Verweis auf einen Wert. Dies bedeutet nicht, dass der darin enthaltene Wert unveränderlich ist, sondern dass die Variablenkennung nicht neu zugewiesen werden kann.

Anthony
quelle
24
Das ist allerdings etwas irreführend. Für Zahlen, Zeichenfolgen, Boolesche Werte usw. (Grundelemente) constist unveränderlich. Für Objekte und Arrays kann es nicht neu zugewiesen werden, aber der Inhalt kann geändert werden (z. B. array.push).
Florian Wendelborn
2
JS-Grundelemente sind jedoch immer unveränderlich. Ob Sie verwenden constoder nicht, hat keinen Einfluss darauf.
12Me21
1
@Dodekeract ist daher per Definition nicht unveränderlich. Wenn sich die Werte ändern können, ist es nicht unveränderlich, obwohl es für die von Ihnen aufgelisteten
Anthony
13

var : Deklariert eine Variable, Wertinitialisierung optional.

let : Deklariert eine lokale Variable mit Blockbereich.

const : Deklariert eine schreibgeschützte benannte Konstante.

Ex:

var a;
a = 1;
a = 2;//re-initialize possible
var a = 3;//re-declare
console.log(a);//3

let b;
b = 5;
b = 6;//re-initiliaze possible
// let b = 7; //re-declare not possible
console.log(b);

// const c;
// c = 9;   //initialization and declaration at same place
const c = 9;
// const c = 9;// re-declare and initialization is not possible
console.log(c);//9
// NOTE: Constants can be declared with uppercase or lowercase, but a common
// convention is to use all-uppercase letters.
Srikrushna
quelle
10

Sie haben gute Antworten, aber lassen Sie es uns einfach halten.

const sollte verwendet werden, wenn Sie eine definierte Konstante haben (lesen Sie als: sie ändert sich während Ihrer Programmausführung nicht).

Zum Beispiel:

const pi = 3.1415926535

Wenn Sie der Meinung sind, dass dies bei einer späteren Ausführung geändert werden kann, verwenden Sie a var.

Der praktische Unterschied, basierend auf dem Beispiel, ist, dass bei constIhnen immer angenommen wird, dass pi 3,14 [...] sein wird, es ist eine Tatsache.

Wenn Sie es als definieren var, kann es 3.14 [...] sein oder nicht.

Für eine technischere Antwort ist @Tibos akademisch richtig.

Edgar Griñant
quelle
7

Nach meiner Erfahrung verwende ich const, wenn ich etwas festlegen möchte, das ich später ändern möchte, ohne den Code nach fest codierten Bits durchsuchen zu müssen, z. B. nach einem Dateipfad oder einem Servernamen.

Der Fehler bei Ihren Tests ist jedoch eine andere Sache. Sie versuchen, eine andere Variable namens x zu erstellen. Dies wäre ein genauerer Test.

const x = 'const';
x = 'not-const';
Funkotron_King
quelle
9
Ich verstehe, was du meinst, aber - es ist lustig, dass "konstant" für dich "etwas bedeutet, das ich vielleicht ändern möchte". : P
Venryx
4

Persönliche Vorlieben wirklich. Sie können const verwenden, wenn es, wie Sie sagen, nicht neu zugewiesen wird und konstant ist. Zum Beispiel, wenn Sie Ihren Geburtstag zuweisen möchten. Ihr Geburtstag ändert sich nie, sodass Sie ihn als Konstante verwenden können. Ihr Alter ändert sich jedoch, sodass dies eine Variable sein kann.

Carl Markham
quelle
17
Das wäre ein sehr lang laufendes Skript!
Nichtigkeit
3
@nullability Hängt davon ab, wie viele Personen Sie verfolgen. Mehr als ein paar Dutzend und das Skript muss nicht lange laufen :).
Millie Smith
4

Zusammenfassung:

const erstellt eine unveränderliche Bindung, was bedeutet, dass der const-Variablenbezeichner nicht neu zugewiesen werden kann.

const a = "value1";

Sie können es nicht mit neu zuweisen

a = "value2";

Wenn der const-Bezeichner jedoch ein Objekt oder ein Array enthält, kann der Wert geändert werden, sofern wir es nicht neu zuweisen.

const x = { a: 1 }

x.a = 2; //is possible and allowed

const numbers = [1, 2];
numbers.push(3); //is possible and allowed

Bitte beachten Sie, dass const genau wie let ein Blockbereich ist, der nicht mit var identisch ist (der Funktionsbereich hat).

Kurz gesagt, wenn sich durch eine Neuzuweisung wahrscheinlich nichts ändert, verwenden Sie const, andernfalls let oder var, je nachdem, welchen Bereich Sie haben möchten.

Es ist viel einfacher, über den Code nachzudenken, wenn absolut klar ist, was durch Neuzuweisung geändert werden kann und was nicht. Das Ändern einer Konstante in eine Let ist denkbar einfach. Wenn Sie standardmäßig const verwenden, müssen Sie vorher zweimal überlegen. Und das ist in vielen Fällen eine gute Sache.

Tejas Patel
quelle
2
Main point is that how to decide which one identifier should be used during development.
In java-script here are three identifiers.

1. var (Can re-declared & re-initialize)
2. const (Can't re-declared & re-initialize, can update array values by using push)
3. let (Can re-initialize but can't re-declare)

'var': Zum Zeitpunkt des Codierens, wenn wir über Code-Standard sprechen, verwenden wir normalerweise den Namen des Bezeichners, der für andere Benutzer / Entwickler leicht verständlich ist. Wenn wir zum Beispiel an viele Funktionen denken, bei denen wir einige Eingaben verwenden und diese verarbeiten und ein Ergebnis zurückgeben, wie zum Beispiel:

**Example of variable use**

function firstFunction(input1,input2)
{
 var process = input1 + 2; 
 var result = process - input2;
 return result;
}


function otherFunction(input1,input2)
{
 var process = input1 + 8; 
 var result = process * input2;
 return result;
}

In den obigen Beispielen erzeugen beide Funktionen unterschiedliche Ergebnisse, verwenden jedoch denselben Variablennamen. Hier können wir sehen, dass 'Prozess' und 'Ergebnis' beide als Variablen verwendet werden und sollten.

 **Example of constant with variable**

 const tax = 10; 
 const pi = 3.1415926535; 

function firstFunction(input1,input2)
{
 var process = input1 + 2; 
 var result = process - input2;
 result = (result * tax)/100; 
 return result;
}


function otherFunction(input1,input2)
{
 var process = input1 + 8; 
 var result = process * input2 * pi;
 return result;
}

Bevor wir 'let' in Java-Script verwenden, müssen wir 'use strict' oben in die js-Datei einfügen

 **Example of let with constant & variable**

 const tax = 10; 
 const pi = 3.1415926535; 
 let trackExecution = '';

function firstFunction(input1,input2)
{
 trackExecution += 'On firstFunction'; 
 var process = input1 + 2; 
 var result = process - input2;
 result = (result * tax)/100; 
 return result;
}


function otherFunction(input1,input2)
{
 trackExecution += 'On otherFunction'; # can add current time 
 var process = input1 + 8; 
 var result = process * input2 * pi;
 return result;
}

 firstFunction();
 otherFunction();
 console.log(trackExecution);

Im obigen Beispiel können Sie verfolgen, welche Funktion wann ausgeführt wurde und welche Funktion während einer bestimmten Aktion nicht verwendet wurde.

Vinod
quelle
1

Zunächst drei nützliche Dinge const(abgesehen von den Verbesserungen des Anwendungsbereichs let):

  • Es dokumentiert für Personen, die den Code später lesen, dass sich der Wert nicht ändern darf.
  • Es verhindert, dass Sie (oder jemand, der nach Ihnen kommt) den Wert ändern, es sei denn, er geht zurück und ändert die Deklaration absichtlich.
  • Dies könnte der JavaScript-Engine einige Analysen hinsichtlich der Optimierung ersparen. Sie haben beispielsweise erklärt, dass sich der Wert nicht ändern kann, sodass die Engine nicht arbeiten muss, um herauszufinden, ob sich der Wert ändert, damit sie anhand des sich nicht ändernden Werts entscheiden kann, ob sie optimiert werden soll.

Deine Fragen:

Wann ist es angebracht, constanstelle von zu verwenden var?

Sie können dies jederzeit tun, wenn Sie eine Variable deklarieren, deren Wert sich nie ändert. Ob Sie dies für angemessen halten, hängt ganz von Ihren Vorlieben / den Vorlieben Ihres Teams ab.

Sollte es jedes Mal verwendet werden, wenn eine Variable deklariert wird, die nicht neu zugewiesen werden soll?

Das liegt an Ihnen / Ihrem Team.

Macht es tatsächlich einen Unterschied, ob var is used in place ofconst` oder umgekehrt?

Ja:

  • varund consthaben unterschiedliche Geltungsbereichsregeln. (Möglicherweise wollten Sie eher mit vergleichen letals mit var.) Insbesondere: constund lethaben einen Blockbereich und erstellen bei Verwendung im globalen Bereich keine Eigenschaften für das globale Objekt (obwohl sie globale Werte erstellen). varhat entweder einen globalen Bereich (bei Verwendung im globalen Bereich) oder einen Funktionsbereich (auch wenn er in einem Block verwendet wird) und erstellt bei Verwendung im globalen Bereich eine Eigenschaft für das globale Objekt.
  • Siehe meine "drei nützlichen Dinge" oben, sie alle gelten für diese Frage.
TJ Crowder
quelle
1

Die Semantik von varundlet

varund letsind eine Aussage an die Maschine und an andere Programmierer:

Ich beabsichtige, dass sich der Wert dieser Aufgabe im Laufe der Ausführung ändert. Verlassen Sie sich nicht auf den möglichen Wert dieser Aufgabe.

Auswirkungen der Verwendung von varundlet

varund letandere Programmierer zu zwingen, den gesamten dazwischenliegenden Code von der Deklaration bis zur eventuellen Verwendung zu lesen und den Wert der Zuweisung zu diesem Zeitpunkt in der Programmausführung zu begründen.

Sie schwächen die Argumentation der Maschine für ESLint und andere Sprachdienste, um falsch eingegebene Variablennamen in späteren Zuweisungen korrekt zu erkennen, und die Wiederverwendung von Variablennamen des äußeren Bereichs, wenn der innere Bereich die Deklaration vergisst.

Sie führen auch dazu, dass Laufzeiten viele Iterationen über alle Codepfade ausführen, um zu erkennen, dass es sich tatsächlich um Konstanten handelt, bevor sie optimiert werden können. Dies ist zwar weniger problematisch als die Fehlererkennung und die Verständlichkeit für Entwickler.

Wann zu verwenden const

Wenn sich der Wert der Referenz im Laufe der Ausführung nicht ändert, lautet die korrekte Syntax, um die Absicht des Programmierers auszudrücken const. Bei Objekten bedeutet das Ändern des Referenzwerts, auf ein anderes Objekt zu zeigen, da die Referenz unveränderlich ist, das Objekt jedoch nicht.

" const" Objekte

Für Objektreferenzen kann der Zeiger nicht auf ein anderes Objekt geändert werden, aber das Objekt , das auf eine erstellt und zugewiesen constErklärung ist wandelbar. Sie können Elemente zu einem constreferenzierten Array hinzufügen oder daraus entfernen und Eigenschaftsschlüssel für ein constreferenziertes Objekt mutieren .

Um unveränderliche Objekte zu erhalten (was wiederum dazu führt, dass Ihr Code für Menschen und Maschinen leichter zu verstehen ist), können Sie Object.freezedas Objekt bei Deklaration / Zuweisung / Erstellung folgendermaßen ausführen :

const Options = Object.freeze(['YES', 'NO'])

Object.freeze wirkt sich zwar auf die Leistung aus, Ihr Code ist jedoch aus anderen Gründen wahrscheinlich langsam. Sie möchten es profilieren.

Sie können das veränderbare Objekt auch in einer Zustandsmaschine kapseln und tiefe Kopien als Werte zurückgeben (so funktionieren Redux- und React-Zustände). Unter Vermeiden eines veränderlichen globalen Status in Browser JS finden Sie ein Beispiel dafür, wie Sie dies aus ersten Prinzipien erstellen können.

Wann varund letpassen gut zusammen

letund varveränderlichen Zustand darstellen. Sie sollten meiner Meinung nach nur zur Modellierung des tatsächlichen veränderlichen Zustands verwendet werden . Dinge wie " Ist die Verbindung lebendig? ".

Diese sind am besten in testbaren Zustandsautomaten eingekapselt, die konstante Werte verfügbar machen , die den " aktuellen Status der Verbindung " darstellen, der zu jedem Zeitpunkt eine Konstante ist und an dem der Rest Ihres Codes tatsächlich interessiert ist.

Das Programmieren ist bereits schwierig genug, um Nebenwirkungen zu komponieren und Daten zu transformieren. Verwandeln Sie jede Funktion in eine nicht testbare Zustandsmaschine, indem Sie einen veränderlichen Zustand mit Variablen erstellen, der nur die Komplexität erhöht.

Eine differenziertere Erklärung finden Sie unter Shun the Mutant - Der Fall fürconst .

Josh Wulf
quelle
0

Ich bin kein Experte im JS-Kompilierungsgeschäft, aber es ist sinnvoll zu sagen, dass v8 das const-Flag verwendet

Normalerweise wird der Speicher nach dem Deklarieren und Ändern einer Reihe von Variablen fragmentiert, und v8 wird angehalten, um ausgeführt zu werden, macht einige Sekunden Pause, um gc oder Garbage Collection durchzuführen.

Wenn eine Variable mit const v8 deklariert wird, kann sie sicher in einen engen Container mit fester Größe zwischen anderen const-Variablen gestellt werden, da sie sich nie ändert. Es kann auch die richtigen Operationen für diese Datentypen speichern, da sich der Typ nicht ändert.

Jude
quelle
0

Wenn es um die Entscheidung zwischen let und const geht , bevorzugen Sie immer const, damit die Verwendung im Code klar ist. Auf diese Weise erhalten Sie eine Fehlermeldung, wenn Sie versuchen, die Variable neu zu deklarieren. Wenn es keine andere Wahl gibt, als sie neu zu deklarieren, wechseln Sie einfach zu let . Beachten Sie, dass die Werte , wie Anthony sagt, nicht unveränderlich sind (zum Beispiel kann ein const- Objekt mutierte Eigenschaften haben).

Wenn es um var geht, habe ich ES6 nie im Produktionscode verwendet und kann mir keinen Anwendungsfall dafür vorstellen. Beachten Sie jedoch, dass mit var deklarierte Variablen keinen Blockbereich haben.

Tiago Martins Peres 李大仁
quelle