2013-02-21 17 views
52

Perché le variabili di sollevamento JavaScript?Perché le variabili di sollevamento JavaScript?

Qual è stata la logica dei progettisti quando hanno deciso di implementare il sollevamento? Ci sono altre lingue popolari che fanno questo?

Fornire collegamenti pertinenti a documentazione e/o registrazioni.

+1

["perché javascript non ha davvero un vero senso dell'ambito lessicale"] (http://stackoverflow.com/a/3725763/344643), qualunque cosa significhi –

+0

Bello! sai perché ? – Xlaudius

+4

Sospetto che per * questo * punto sia storico, e dubito seriamente che sia stato originariamente qualcosa di diverso dalla "facilità di implementazione". –

risposta

34

Come spiega Stoyan Stefanov nel libro "JavaScript Patterns", il sollevamento è il risultato dell'implementazione dell'interprete JavaScript.

L'interpretazione del codice JS eseguita in due passaggi. Durante il primo passaggio, l'interprete elabora le dichiarazioni di variabili e funzioni.

Il secondo passaggio è in realtà un passo di esecuzione del codice. L'interprete elabora le espressioni di funzione e le variabili non dichiarate.

Quindi, possiamo usare il concetto di "sollevamento" per descrivere tale comportamento.

Spero che questo aiuti.

+8

Personalmente non mi piace davvero la parola "sollevamento".Fornisce la falsa rappresentazione che le dichiarazioni di variabili e funzioni sono magicamente sollevate nella parte superiore dello scope corrente, quando in realtà l'interprete JS, come hai detto, esegue la scansione del codice sorgente per i binding e ** quindi ** esegue il codice. – contactmatt

+0

Ora ho capito perché JS il linguaggio più incompreso, non l'ho visto in nessun tutorial. E si è confuso con il sollevamento (e il flusso interepreter). –

+2

Uh, questo non spiega veramente la logica. Un interprete single-pass (che non avrebbe portato al sollevamento) sarebbe stato molto più semplice - quindi perché i progettisti hanno optato per due passaggi? – Bergi

Problemi correlati