Es gibt einige sehr wichtige Vorteile für die Verwendung von const und einige würden sagen, es sollte wegen soweit wie möglich verwendet werden, wie bewusste und indikativ ist.
Es ist, soweit ich das beurteilen kann, die indikativste und vorhersagbarste Deklaration von Variablen in Javascript und eine der nützlichsten, WEIL es so eingeschränkt ist. Warum? Weil dadurch einige Möglichkeiten für var- und let-Deklarationen entfallen.
Was können Sie ableiten, wenn Sie ein 'const' lesen? Sie kennen alle folgenden Punkte, indem Sie einfach die Anweisung const deklaration AND lesen, ohne nach anderen Verweisen auf diese Variable zu suchen: der Wert ist an diese Variable gebunden (obwohl das zugrunde liegende Objekt nicht tief unveränderlich ist); auf es kann nicht außerhalb seines unmittelbar enthaltenen Blocks zugegriffen werden; und auf die Bindung wird vor der Deklaration aufgrund zeitlicher Dead Zone-Regeln (TDZ) nie zugegriffen.
Aus einem Artikel argumentiert die Vorteile von let und const, und es auch direkt beantwortet Ihre Frage über die Einschränkungen/Grenzen des Keywords:
„Constraints wie die von lassen und konst angeboten werden, eine leistungsfähige Methode zur Herstellung von Code einfacher zu verstehen Versuchen Sie, so viele dieser Einschränkungen wie möglich in den Code, den Sie schreiben, zu sammeln.Je mehr deklarative Einschränkungen, die begrenzen, was ein Stück Code bedeuten könnte, desto einfacher und schneller ist es für Menschen zu lesen, zu analysieren und zu verstehen ein Stück Code in der Zukunft
Zugegeben, es gibt mehr Regeln für eine const-Deklaration als für eine var-Deklaration: block-scoped, TDZ, assign at declaration, no re Zuordnung. Während var-Anweisungen nur Funktion Scoping signalisieren. Regelzählung bietet jedoch wenig Einblick. Es ist besser, diese Regeln in Bezug auf die Komplexität abzuwägen: Fügt die Regel Komplexität hinzu oder subtrahiert sie? Im Fall von const bedeutet Block Scoping einen engeren Bereich als Funktionsumfang, TDZ bedeutet, dass wir den Bereich nicht rückwärts von der Deklaration scannen müssen, um die Verwendung vor der Deklaration zu erkennen, und die Zuweisungsregeln bedeuten, dass die Bindung immer erhalten bleibt die gleiche Referenz.
Je eingeschränkter Aussagen sind, desto einfacher wird ein Stück Code. Wenn wir Einschränkungen hinzufügen, was eine Aussage bedeuten könnte, wird Code weniger unberechenbar. Dies ist einer der Hauptgründe, warum statisch typisierte Programme in der Regel einfacher zu lesen sind als dynamisch typisierte. Statische Typisierung stellt eine große Einschränkung für den Programmschreiber dar, aber es stellt auch eine große Einschränkung dar, wie das Programm interpretiert werden kann, wodurch sein Code leichter verständlich wird.
Mit diesen Argumenten im Sinn, ist es empfehlenswert, dass Sie const, wo möglich verwenden, da es die Aussage ist, dass uns die wenigsten Möglichkeiten gibt, um darüber nachzudenken“
. Quelle: https://ponyfoo.com/articles/var-let-const
Sie scheinen mehrere zu fragen Fragen: 1) * "Ich bin interessiert, wenn es irgendwelche Grenzen gibt, welche Arten von Werten mit const in JavaScript gesetzt werden können" * Nr. 2) * "Ist das gültig?" * Ja. 3) * "ist es schlecht Übung aus irgendeinem Grund "* Ich denke, es war nicht lange genug, um etwas darüber zu sagen, aber ich sehe nicht, warum dies Pad Praxis sein sollte. Es ist nicht viel anders als' var doSomething =; ' 4) * "Sollen alle Funktionen in ES6 so definiert werden? ? "Scheint mir umständlich. Ich mag Funktionserklärungen. Jeder für sich. –
So wie ich es sehe (Meinung, keine Tatsache), macht es Sinn, wenn man Funktionen neu definieren will. Ob es gesund ist oder ob es einen funktionalen Nutzen hat - das ist fraglich. Wenn Sie denken, dass es zu Ihrem Nutzungsszenario passt, glaube ich nicht, dass jemand Ihre Entscheidung widerlegen kann und es für eine schlechte Praxis hält. – Mjh
Ich denke, die Frage ist, was Sie mit "const" erreichen wollen. Möchten Sie verhindern, dass die Funktion außer Kraft gesetzt wird? Ich nehme an, Sie kennen Ihren Code, um das nicht zu tun. Möchten Sie die Absicht von "etwas tun" ausdrücken, d. H. Dass es eine Funktion hält und seinen Wert nicht ändert? Ich denke, dass Funktionsdeklarationen diese Absicht klar kommunizieren. Also, wenn Sie "Laufzeitschutz" aus dem Overriding benötigen, gehen Sie dafür. Ansonsten sehe ich keinen großen Nutzen. Wenn Sie 'var foo = function() {};' verwenden, würde ich natürlich 'const' anstelle von' var' verwenden. –