Sollevamento Javascript e dichiarazione di ambito globale
In javascript, la fase di compilazione trova e associa tutte le dichiarazioni ai loro ambiti appropriati.
CASO 1
a = 2;
console.log(a);
Se non viene utilizzato in modalità rigorosa, si presume che lo snippet venga effettivamente elaborato come:
var a;
a = 2;
console.log(a);
Uscita: 2
CASO2
se la dichiarazione avviene sotto console.log ()
console.log(a);
var a = 2;
Qui alla riga 1: il compilatore verificherà la dichiarazione di a nel suo ambito se non viene trovato, l'ambito globale ne assegnerà uno e lo stesso codice verrà assunto nuovamente come
var a;
console.log(a);
a = 2;
Output: undefined // poiché nessun valore viene assegnato durante la lettura dell'interprete da console
CASO 3
console.log(a);
a = 2;
Uscita: RefErr
Perché questo genera un errore di riferimento e non è indefinito?
Risposte
Se guardi attentamente i tuoi primi due casi, dichiari sempre la variabile ae in JavaScript vengono sollevate solo le dichiarazioni.
Detto questo, nel tuo Case 3, la variabile anon viene mai dichiarata, quindi il sollevamento non è possibile qui. Con questo, v'è variabile dal nome adel perimetro, e quindi, ReferenceError.
Se guardi la descrizione di ReferenceError , si legge:
L'oggetto ReferenceError rappresenta un errore quando si fa riferimento a una variabile inesistente.
Le variabili globali implicite non implicano varun'istruzione. Non vi è alcun sollevamento di loro.