Sollevamento in Javascript === Compilazione?


9

Mi sono imbattuto in una prospettiva interessante durante un recente colloquio di lavoro.

Il sollevamento in Javascript riguarda lo spostamento delle dichiarazioni delle variabili e delle funzioni nella parte superiore dello script. Possiamo chiamare questa fase come compilation ?

Sono consapevole del fatto che l'interprete Javascript ha 2 passaggi sullo script di input in cui nel primo passaggio esegue il sollevamento e nel secondo passaggio esegue effettivamente lo script. Sapendo che Javascript è un linguaggio interpretato, questa domanda mi ha confuso un po '.

Risposte:


18

No. Il sollevamento non è una raccolta.

Il sollevamento è un concetto che è stato creato dagli sviluppatori per spiegare cosa succede durante la compilazione quando le variabili e le dichiarazioni di funzione vengono spostate in cima al loro ambito di contenimento.

La compilazione è ciò che accade quando il tuo codice Javascript viene trasformato in un'altra rappresentazione (di solito una sorta di codice eseguibile), da eseguire ora o più tardi. Il motore Javascript V8 di Chrome in realtà ha due compilatori; uno per creare subito un codice eseguibile rapido e sporco, l'altro per creare un codice ottimizzato in un secondo momento.

I linguaggi di programmazione non sono definiti come linguaggi "compilati" o "interpretati". Piuttosto, le lingue vengono interpretate o compilate secondo necessità.

Ulteriori letture
Sollevamento in Javascript
Come funziona il motore V8


1
L'articolo di Wikipedia sulle lingue interpretate è anche utile sulla distinzione "interpretata" vs. "compilata": en.wikipedia.org/wiki/Interpreted_language

Se lo capisco correttamente, Hoisting non converte lo script in codice leggibile dalla macchina, quindi non è una compilation . Ho ragione? :)
Rahul Desai,

Leggi di nuovo il secondo paragrafo della mia risposta.
Robert Harvey,

1
Nella mia recente conversazione con quell'intervistatore su questo argomento, mi ha dato il riferimento al corso Advanced JS su FrontendMasters.com in cui Kyle Simpson spiega che si tratta di compilation, nel senso che se confrontiamo questo con lo script di Bash, per esempio, non saprei cosa aspettarmi sulla linea # 4 mentre è sulla linea # 3. Tuttavia, nel caso del compilatore JS, ha visto ciò che è sulla linea # 4 in precedenza durante il passaggio di sollevamento. È solo che non viene convertito in codice binario a differenza di altre lingue. Javascript viene compilato ogni volta che viene eseguito.
Rahul Desai,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.