14

Werfen Sie einen Blick auf den Code unten:Ist es ein Fehler in der Firefox Edition?

var c = 50; 

{ 
    console.log(y); 
    let y = 50; 
} 

Dieser Code ein Reference werfen soll und es tut. Aber in der Konsole hat mir die Nachricht, die mit der Ausnahme verbunden ist, nur meine Gedanken durcheinander gebracht. Dort heißt es:

ReferenceError: can't access lexical declaration 'c' before initialization

Im Code c ist die erste Variable deklariert. Die Fehlermeldung weist darauf hin, dass bei der Deklaration c ein Fehler aufgetreten ist. Es ist eindeutig die y Variable innerhalb des Blocks, die die Ausnahme verursacht. Wir können keine Variablen verwenden, die vor der Deklaration mit let deklariert wurden. Wenn ich eine andere Variable in der ersten Zeile erklären, sagen test, ändert sich die Fehlermeldung:

ReferenceError: can't access lexical declaration 'test' before initialization

bin ich etwas fehlt oder habe ich recht über den Bug? Ich habe die neueste Firefox Developer Edition (Version 49.0a2).

Eine andere Sache zu beachten ist, dass der Block ist einfach ein umschließender Block, es ist nicht der Körper einer Funktion.

+0

@Kaiido Also, es ist ein Fehler, oder? Denn Chrome hat die erwartete Fehlermeldung für diesen Fall. –

+4

Wenn Sie denken, dass es ein Fehler ist, dann machen Sie einen Fehlerbericht und sie werden sagen, ja oder nein. – epascarello

+0

@Bergi Die Fehlermeldung verwirrt mich, weil ich dachte, dass etwas mit der Variablen 'y' nicht stimmt. Aber stattdessen sagt es etwas stimmt nicht mit der Variable, die in der ersten Zeile in meinem Beispiel ist. –

Antwort