Benutzt man sonst, um ein 'let' oder 'const' nach dem if / else zu deklarieren?

8

Ich bin mir nicht sicher, warum, aber ich kann die Variablen let oder const nicht aufrufen, wenn ich sie in einer if/else -Anweisung deklariere.

%Vor%

Wenn ich diesen Code benutze sagt das classes is not defined .

Aber wenn ich die const zu var Klassen ändere ist definiert, aber ich bekomme eine Warnung über classes used outside of binding context und all var declarations must be at the top of the function scope

Wie könnte ich das beheben?

    
Johhan Santana 29.11.2016, 22:35
quelle

5 Antworten

7

Sie sollten eine ternäre Zuweisung verwenden:

%Vor%

Wie in anderen Kommentaren / Antworten angegeben, sind let und const der gesperrte Bereich, weshalb sie in Ihrem Beispiel nicht funktionieren.

Für einen DRYer-Code können Sie das ternäre Zeichenfolgen-Literal auch verschachteln:

%Vor%     
maioman 29.11.2016, 22:39
quelle
17

let und const sind auf Blockebene definiert, dh sie können nur innerhalb des Blocks verwendet werden, für den sie in ie definiert wurden. { // if defined in here can only be used here }

In diesem Fall würde ich einfach oberhalb der if / else-Anweisung definieren

%Vor%     
finalfreq 29.11.2016 22:38
quelle
2

Verwenden Sie keine if - else -Anweisung, sondern einen ternären Ausdruck:

%Vor%

Alternativ können Sie es auch außerhalb des Blocks if deklarieren, wodurch Sie die Duplizierung ebenfalls entfernen können:

%Vor%

Sehen Sie sich auch chaotische Klassennamen an.

    
Bergi 29.11.2016 22:40
quelle
2

let und const sind auf Blockebene definiert, Sie müssen sie also außerhalb des Blocks definieren. var funktioniert, weil es sich hebt.

Sie können classes vor dem if -Block wie @ finalfreq

oder

%Vor%     
antyang 29.11.2016 23:03
quelle
0

Der ESLint-Standard mag die Operatoren am Anfang der Zeile. Lange Bedingungen sollten auch abstrahiert werden, außer in einer Computer-Zeitschleife.

In diesem speziellen Fall sind die Saiten auch lang, also würde ich diese auch abstrahieren. Das Problem mit Bergis Weg ist, dass die meisten Linters seinen Stil aus Konformitätsgründen verkrüppeln werden.

Auf diese Weise bleibt alles normal und leicht zu lesen, wenn Sie mit den ternären Sprachen vertraut sind, die Sie sein sollten.

%Vor%     
Ray Foss 23.01.2018 22:57
quelle