Cuando llega un script al navegador el JS Engine inicia un proceso el cual
consta de:
Recibir el código como un flujo de bytes UTF-16 y pasarlo a un decodificador
de flujo de bytes (el cual hace parte del motor).
El parser toma el código y lo descompone en tokens (los tokens son elementos
de js como: let, new, símbolos de operaciones, functions, promises).
Gracias a el anterior parseo se genera una estructura de datos en forma de
árbol, o Abstract Syntax Tree (AST).
El intérprete recorre el AST y va generando el bytecode.
El optimizing compiler optimiza el código bytecode a machine code y se
reemplaza el código base.
Nota: El optimizing compiler encuentra los puntos donde el código se puede
optimizar, no lo hace con todo el código. Normalmente optimiza el código que
se repite varias veces, como por ejemplo un ciclo for muy largo.