Bedingte Initialisierung einer Konstante in Javascript

9

Ab ES6 haben wir const .

Dies ist nicht erlaubt:

%Vor%

Das macht Sinn, weil es uns daran hindert, die Konstante vor ihrer Initialisierung zu verwenden.

Aber wenn ich das tue

%Vor%

x wird zum Blockbereich.

Also, wie man eine Konstante bedingt erstellt?

    
Arjun U. 04.08.2016, 10:45
quelle

4 Antworten

11

Ihr Problem ist, wie Sie wissen, dass ein const in derselben Anweisung initialisiert werden muss, in der es deklariert wurde.

Dies bedeutet nicht, dass der Wert, den Sie Ihrer Konstante zuweisen, ein Literalwert sein muss. Es könnte jede gültige Aussage wirklich - ternär sein:

%Vor%

Oder vielleicht nur dem Wert einer Variablen zuweisen?

%Vor%

Sie könnten es natürlich auch dem Rückgabewert einer Funktion zuweisen:

%Vor%

Es gibt also viele Möglichkeiten, den Wert dynamisch zu gestalten. Sie müssen nur sicherstellen, dass er nur an einer Stelle zugewiesen ist.

    
Hecksa 04.08.2016, 11:00
quelle
5

Wenn der ternäre Operator keine Option für seine Unlesbarkeit ist, ist die einzige andere Option IIFE, die umständlich ist, aber fließend gelesen werden kann:

%Vor%

Die Semantik von const ist, dass sie einmal vergeben wird. Es sollte let für diesen Anwendungsfall sein:

%Vor%

Aus meiner persönlichen Erfahrung sind ~ 95% der Variablen const . Wenn eine Variable let sein muss, lass sie einfach selbst sein; die Wahrscheinlichkeit von Fehlern, die durch zufällige Neuzuweisungen verursacht werden, ist vernachlässigbar.

    
estus 04.08.2016 12:36
quelle
3

Angenommen, dass const in beiden Instanzen deklariert wird, könnten Sie eine ternäre Zuweisung verwenden:

%Vor%     
CodingIntrigue 04.08.2016 10:47
quelle
0

Ich schlage diese Lösung mit einer Singleton-Muster Implementierung vor:

%Vor%     
Ala Eddine JEBALI 16.10.2017 11:26
quelle