2010-08-09 23 views
6

Sono interessato a scoprire come funziona l'interprete JavaScript (motore se lo desideri). Sono consapevole che JavaScript non è compilato. Ho esaminato le specifiche ECMA, ma non spiega come funziona il motore reale.Come funzionano gli interpreti/motori JavaScript?

Il motivo principale per cui lo chiedo è perché mi piacerebbe capire perché IE7 si comporta in modo leggermente diverso da IE8 o Firefox 3.5+.

Sospetto che determinate chiamate di funzione vengano gestite in un ordine diverso, ma mi piacerebbe sapere con certezza.

Ho anche guardato alcuni video di google talk sull'ottimizzazione JavaScript insieme al video JavaScript: Good Parts. Questi hanno toccato brevemente l'argomento.

Grazie

+0

La specifica ECMA, come molte specifiche del linguaggio di programmazione, specifica la sintassi e la semantica del linguaggio, non l'implementazione. Ecco perché non vedrai una "spiegazione" del motore Javascript. –

+0

Se si dimostra un esempio di ciò che si vede, posso spiegare qual è la differenza e perché è cambiata. – chuckj

risposta

1

Se si può fare con linguaggi di basso livello, guarda le fonti di V8 o TraceMonkey e ricerca. È un modo un po 'difficile capire l'interno dei motori JavaScript, ma è piuttosto interessante.

4

Ho esattamente lo stesso problema - Execution Contexts nella specifica ECMA. fornisce qualcosa di oscuro! intuizione. Le idiosincrasie sono però dilaganti anche tra le versioni di una singola piattaforma.

Generalmente, gli argomenti su Automata, teoria della funzione ricorsiva, teoria del linguaggio formale e progettazione del compilatore forniscono un solido background per "capire" un interprete.

Nell'astrazione, se la semantica è esaurientemente ben definita, senza richiedere "disambiguazione", i risultati della funzione formale saranno identici indipendentemente dall'implementazione. In pratica, c'è un sacco di problemi, come visto dagli extra come .toSource(), che un motore potrebbe avere e un altro no.

StackOverflow ref: What are Gecko's operational semantics?

Problemi correlati