Javascript es un lenguaje de programación compilado Just In Time de alto nivel que convierte todo el código de la máquina a la vez y luego lo ejecuta inmediatamente. El código Javascript es ejecutado por el motor Javascript , que es un software separado. Los diferentes navegadores tienen su propia implementación de JS Engine integrado en el navegador, como el motor V8 de Google Chrome, Spider Monkey de Mozilla Firefox, SquirrelFish de Safari, etc. Exploremos cómo funciona el motor V8 de Google .
El código JavaScript primero entra en el analizador
- Analizador: lee el código JavaScript y lo analiza en una estructura de datos llamada AST (Árbol de sintaxis abstracta). AST se construye dividiendo el código en tokens y verifica los errores semánticos y sintácticos en el código. Este árbol se usa más tarde para generar código de máquina. A continuación se muestra un ejemplo de cómo se ve AST. (Nota: el AST real parece más complejo, esto es solo para explicarle fácilmente).
- Compilación / Ejecución: como se mencionó anteriormente, Javascript es un lenguaje compilado justo en el tiempo que utiliza tanto el intérprete como el compilador. En primer lugar, el AST generado va al Intérprete (Google lo llamó Ignition ) que proporciona el código de la máquina. Este código de máquina ahora se ejecuta con la ayuda de Call Stack. Mientras se ejecuta el código de máquina, el Compilador (Google lo llamó Turbo Fan ) intenta optimizar el código y devuelve el código de máquina optimizado que se ejecutará más tarde. El proceso de compilación y ejecución de código va de la mano.
- Optimización: JS Engine primero crea una versión muy poco optimizada del código de la máquina para que la ejecución del código pueda comenzar lo antes posible. Pero en segundo plano, el código se optimiza durante la ejecución del programa que ya se está ejecutando.
Nota: a partir de ahora, el motor V8 de Google es el motor Javascript más rápido.
Publicación traducida automáticamente
Artículo escrito por vikas2pandey020 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA