2010-08-09 12 views
6

Me interesa saber cómo funciona el intérprete de JavaScript (motor si lo desea). Soy consciente de que JavaScript no está compilado. He examinado la especificación ECMA, pero no explica cómo funciona el motor real.¿Cómo funcionan los intérpretes/motores de JavaScript?

La razón principal por la que estoy preguntando esto es porque me gustaría entender por qué IE7 se comporta de manera ligeramente diferente a IE8 o Firefox 3.5+.

Sospecho que ciertas llamadas a funciones se manejan en un orden diferente, pero me gustaría estar seguro.

También he visto algunos videos de Google talks sobre optimización de JavaScript junto con JavaScript: Good Parts video. Estos tocaron el tema brevemente.

Gracias

+0

La especificación ECMA, al igual que muchas características del lenguaje de programación, especifica la sintaxis y la semántica de la lengua, no la implementación. Es por eso que no verá una "explicación" del motor Javascript. –

+0

Si proporciona un ejemplo de lo que ve, puedo explicarle la diferencia y por qué cambió. – chuckj

Respuesta

1

Si usted puede hacer frente a lenguajes de bajo nivel, mirar las fuentes de V8 o TraceMonkey y la investigación de ellos. Es una forma un poco difícil de entender las partes internas de los motores de JavaScript, pero es bastante interesante.

4

Tengo exactamente el mismo problema - Execution Contexts en la especificación ECMA. proporciona algo oscuro! visión. Sin embargo, las idiosincrasias son rampantes incluso entre las versiones de una única plataforma.

En general, los temas de Autómatas, la teoría de funciones recursivas, Teoría lenguaje formal y compilador de diseño proporcionan una base sólida para la "comprensión" de un intérprete.

En la abstracción, si están bien definidos de manera exhaustiva la semántica, sin necesidad de "desambiguación", a continuación, los resultados de la función formales serán idénticos, independientemente de la aplicación. En la práctica, hay mucho margen de maniobra, como lo ven los extras como .toSource(), que un motor podría tener y otro no.

stackoverflow ref: What are Gecko's operational semantics?

Cuestiones relacionadas