Funcionamiento del Motor JavaScript y Contexto de Ejecución
Clase 5 de 13 • Curso de JavaScript Engine (V8) y el Navegador
Contenido del curso
- 7

Gestión de Memoria en JavaScript: Variables y Constantes
04:52 - 8

Funcionamiento del Call Stack en JavaScript
07:15 - 9

Recolección de Basura en Programación: Conceptos y Ejemplos
03:31 - 10

Evitar el desbordamiento de pila en JavaScript
03:55 - 11

Sincronía y Asincronía en JavaScript: Teoría y Ejemplos Prácticos
04:39 - 12

Sincronismo y asincronismo en JavaScript: Uso y beneficios
11:09 - 13

Fundamentos y Asincronía en JavaScript
02:52
Una vez que se ejecuta un archivo en el navegador, el motor de JavaScript genera un entorno global (Global environment). El entorno global hace tres cosas muy importantes:
- Genera un objeto global llamado
window. - Genera un contexto llamado
this. En un contexto globalthises igual awindow. - Ambiente de ejecución.
Después de generar el entorno global, comienza el contexto de ejecución (Execution context) donde corre el código de JavaScript utilizando un Stack de tareas, apilándolas una por una, en la cuál la última tarea añadida será la primera en ejecutarse.
Una vez que el motor de JavaScript está interactuando con el navegador, realiza los siguientes procesos:
-
Parser: genera un parseo del documento completo mediante palabras claves.
-
AST: Se crea a partir de los nodos que genera el parser. Es una estructura de árbol que representa tu código sintácticamente. Puedes utilizar la página AST Explorer{target="_blank"} para ver cómo funciona.
-
Intérprete: El intérprete recorre el AST y genera Bytecode (lenguaje que entiende la computadora y no es binario) basado en la información que contiene. Sin embargo, si el intérprete detecta que puede optimizar tu código, no genera Bytecode, sino que genera un proceso de optimización que consiste en el profiler y compiler.
-
Profiler y compiler: El profiler monitorea y mira el código para optimizarlo. El compiler optimiza ese código y genera machine code (lenguaje binario). En esta etapa, por la intención de optimizar el código, también genera errores como el Hoisting.

Contribución creada por Andrés Guano.