Sollevamento Javascript e dichiarazione di ambito globale

Aug 21 2020

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

1 AbhishekJain Aug 21 2020 at 14:19

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.

1 Quentin Aug 21 2020 at 14:12

Le variabili globali implicite non implicano varun'istruzione. Non vi è alcun sollevamento di loro.