Disclaimer: Ich weiß, dass die folgende Frage als "nach Meinungen fragen" gesehen werden könnte (also wäre es nicht Thema).
Aber das ist nicht der Fall: Ich suche nach Vor- und / oder Nachteilen facts , die berücksichtigt werden sollten, wenn man darüber nachdenkt.
Zufällig lese ich gerade (aus dem ausgezeichneten Exploring ES6 ) einen Ausschnitt, der sich auf const
vs let
vs var
, wo die Schlussfolgerung besagt (Fettdruck gehört mir):
Dann haben wir zwei Ansätze:
- Bevorzugt
const
:const
markiert unveränderliche Bindungen .- Bevorzugt
let
:const
markiert unveränderliche Werte .Ich lehne mich etwas zugunsten von # 1, aber # 2 ist auch in Ordnung.
Was mich verwirrt ist: Diese Präferenz scheint auf der tiefen technischen Bedeutung des daraus resultierenden Unterschieds zwischen den beiden Ansätzen zu beruhen, als ob der Autor sich im Wesentlichen darüber auslässt, wie der Code funktioniert auf niedriger Ebene .
Aber ich fühle mich auch (und vielleicht zuerst!) vom Lesbarkeitsaspekt betroffen: Unter diesem Gesichtspunkt erscheint # 2 besser, den Code semantisch signifikant zu machen darüber, was mit den verarbeiteten Daten passiert.
Aber vielleicht verpasse ich einige Vorteile der # 1 Wahl ...?
BEARBEITEN, indem Sie die vorgeschlagene Verknüpfung als Duplikat nutzen: Warum sollte ich in den meisten Fällen const anstelle von Javascript verwenden?
In der Tat macht die akzeptierte Antwort auf diese Frage die Dinge tatsächlich so sichtbar, dass sie mich eher zu meiner früheren Sichtweise macht, d. h. # 2 ist besser als # 1.
BTW: Ich habe festgestellt, dass meine Frage wahrscheinlich nicht so klar war, wie es sollte, daher hier eine detailliertere Formulierung:
const
und let
ziemlich bewusst, also fragt meine Frage nichts darüber. const
für jedes unveränderliche Objekt Der Inhalt kann geändert werden!) vs nur für eingefrorene Objekte . Es ist dort, dass ich überrascht bin, dass der Autor # 1 bevorzugt, da (aus meiner Sicht) es eher irreführend ist.
Die häufigste Art der Verwendung von Objekten besteht darin, dass sich ihr Inhalt während des Prozesses ändert, also const
auf ihrer Deklarationsebene lesen, wenn # 1 verwendet wird:
Auf der anderen Seite können wir bei Verwendung von # 2 darauf vertrauen, dass sich ein const
-deklariertes Objekt nicht ändert (abgesehen von Aufsicht und / oder Bug).
Um auf meine Frage zurückzukommen: Da die obige Reflexion eindeutig dazu führt, # 2 zu wählen, frage ich mich, welchen Punkt ich verpasst habe, was den Autor dazu bringt, # 1 zu bevorzugen.
Um mit Ihrer Suche nach Fakten Schritt zu halten, vermeide ich es, Meinungen zu äußern und meine Antwort in objektiven, einfachen Worten zu beschreiben.
Die Präferenz des Autors basiert nicht auf "tiefer technischer Bedeutung", da die Signifikanz eigentlich eher flach ist: Kurz gesagt besteht der einzige Unterschied zwischen den beiden Schlüsselwörtern darin, dass eine const Variable nicht sein kann neu zugewiesen , aber eine lassen Variable kann.
Die Absicht der Präferenz # 1 besteht darin, const in der spezifischen Weise zu verwenden, in der sie definiert wurde, um zu verhindern, dass eine Variable auf eine neue Zuweisung verweist.
Die Absicht der Präferenz # 2 ist vorzugeben (oder act ) wie jeder RHS-Wert, der eine Variable const initialisiert, ist unveränderlich, was erfordert Bemühung der Entwickler, dies zu wissen und entsprechend zu handeln.
Ein Nachteil von # 2 ist, dass es eine Konvention für die Kodierung mit const einführt, die nicht mit seiner eigentlichen Funktion übereinstimmt, so dass es hauptsächlich um Kodierungsstandards und Codepflege geht. Mit anderen Worten, wenn ein Entwicklerteam vorschreibt, dass const nur für unveränderliche Deklarationen verwendet werden soll, macht es den Code leichter verständlich, dass solche Werte nicht geändert werden sollten, aber es ist tatsächlich nicht der Fall, dass sie nicht geändert werden können. (Wenn diese Konvention eingehalten werden sollte, wäre es sinnvoll, const nur für Werte zu verwenden, die tatsächlich unveränderbar sind, z. B. mit Object.freeze()
.)
Der Vorteil von # 1 ist, dass Sie const so verwenden, wie es entworfen wurde: Sie behandeln solche Variablen so, als ob ihre Zuweisung nicht geändert werden könnte, nicht const bietet etwas, das es nicht bietet (dh, Unveränderlichkeit), also gibt es keine Möglichkeit für Entwickler, den Inhalt eines const Objekts, das sie vorgeben wollen, nicht zu ändern.
Tags und Links javascript ecmascript-6