Date un'occhiata al codice qui sotto:Si tratta di un bug nella versione per sviluppatori di Firefox?
var c = 50;
{
console.log(y);
let y = 50;
}
Questo codice si prevede di lanciare una ReferenceError e lo fa. Ma nella console, il messaggio allegato con l'eccezione ha appena fatto saltare la mia mente. Dice:
ReferenceError: can't access lexical declaration 'c' before initialization
Nel codice c
è la prima variabile dichiarata. Il messaggio di errore indica che qualcosa non va con la dichiarazione di c
. È chiaramente la variabile all'interno del blocco, causando l'eccezione. Non possiamo usare variabili dichiarate usando let
prima della sua dichiarazione. Quando mi dichiaro un'altra variabile nella prima riga, dire test
, il messaggio di errore cambia in:
ReferenceError: can't access lexical declaration 'test' before initialization
mi sto perdendo qualcosa o ho ragione circa il bug? Ho l'ultima Firefox Developer Edition (versione 49.0a2).
Un'altra cosa che vale la pena di notare è che il blocco è semplicemente un blocco che racchiude, non è il corpo di una funzione.
@Kaiido Quindi, è un bug giusto? Perché, in questo caso, Chrome ha il messaggio di errore previsto. –
Se pensi che sia un bug, fai un bug report e diranno yay o nay. – epascarello
@Bergi Il messaggio di errore mi confonde perché ho pensato che avrebbe detto che qualcosa non andava nella variabile 'y'. Invece, dice che c'è qualcosa di sbagliato nella variabile che è nella prima riga nel mio esempio. –