Definición:
Bloque de código reutilizable que se puede ejecutar cuando se invoque.
Características técnicas: Cuando se crea una función, JavaScript también crea un Function Object que incluye:
- El código de la función
- Su Lexical Environment (donde fue escrita)
- Espacio para parámetros y variables
- Referencia al Outer Environment
Concepto clave:
Una función = código + contexto donde fue creada
Definición:
Entorno en el que se ejecuta una función o el código global.
Proceso:
Cada vez que llamas a una función, JavaScript crea un nuevo Execution Context.
Componentes:
- Variable Environment (variables declaradas con
var) - Lexical Environment (variables
letyconst, funciones internas, closures) - this binding
| Tipo | Qué representa |
|---|---|
| Global Execution Context | Todo el programa, una sola vez |
| Function Execution Context | Cada vez que se ejecuta una función |
| Eval Execution Context | Código dentro de eval() (poco usado) |
Definición:
Parte del Execution Context donde se guardan:
- Variables declaradas con
var - Parámetros de la función
- El objeto
arguments
El Variable Environment se crea durante la Creation Phase:
- Se invoca la función
- Se crea el Execution Context
- Se prepara el Variable Environment
- Todas las variables
varse inicializan conundefined - Viene la Execution Phase y el código se ejecuta línea por línea
Importante:
vares hoisted (subido con valorundefined)letyconstNO están en el Variable Environment, sino en el Lexical Environment
Ejemplo:
function test() {
console.log(a); // undefined
var a = 10;
}En creación: var a = undefined
En ejecución: a = 10
| Concepto | Función |
|---|---|
| Function | Código + contexto donde fue creada |
| Execution Context | Entorno temporal que se activa para ejecutar código |
| Variable Environment | Almacena variables var, parámetros y arguments |
Anterior tema: Function Invocation & The Execution Stack | Siguiente tema: The Scope Chain | Volver al índice: Índice Temático