Estate atento porque en este enunciado vas a encontrar la solución que buscas.Esta división fue evaluado por nuestros especialistas para garantizar la calidad y exactitud de nuestro contenido.
Solución:
Estás preguntando sobre varios conceptos diferentes que no están muy relacionados. Trataré de abordar brevemente cada uno.
Contexto de ejecución es un concepto en la especificación del lenguaje que, en términos sencillos, equivale aproximadamente al “entorno” en el que se ejecuta una función; es decir, alcance variable (y el cadena de alcancevariables en cierres de ámbitos externos), argumentos de función y el valor de la this
objeto.
los pila de llamadas es una colección de contextos de ejecución.
Ver también esta respuesta y este artículo.
Alcance es literalmente eso: el ámbito en el que se puede acceder a una variable. Simplista:
var x;
function a()
var y;
x
se puede acceder desde cualquier lugar. Cuándo a
es invocado, x
estará en el ámbito exterior. (Almacenado en el cadena de alcance.)
A diferencia de, y
sólo se puede acceder por código en a()
porque se limita a a
el alcance de Esto es lo que var
La palabra clave does: restringe una variable al ámbito local. si omitimos var
, y
terminaría en el alcance globalgeneralmente considerado algo malo.
Pensar en elevación como más una cosa en tiempo de compilación. En JavaScript, función declaraciones son “elevados” a la parte superior de su alcance. En otras palabras, se analizan y evalúan antes de cualquier otro código. (Esto se opone a la función expresionesque se evalúan en línea). Considere lo siguiente:
a();
b();
function a()
var b = function()
la llamada a a()
tendrá éxito porque su declaración fue izada a la cima; a
se asignó a automáticamente antes de que comenzara la ejecución del programa. la llamada a b()
fallará con un TypeError
porque b
no se definirá hasta la línea 4.
Ha preguntado tantos conceptos, pero escojamos uno por uno y entendámoslos.
El entorno en el que se ejecuta su código es Execution context
.
Se crea cuando se ejecuta su código.
Execution Context (Global)
creado por JS Engine contiene 3 cosas importantes para ti:
- Objeto global –
window
- Objeto especial
this
- Referencia al entorno exterior
Veamos un ejemplo sencillo para entender Global Execution Context
:
var a = "Hello World";
function b()
Cuando JS Engine ejecuta este código anterior, crea el siguiente contexto de ejecución (que se muestra en la imagen): Contexto de ejecución global
Ahora veamos cómo JS Engine crea Execution Context
(entonces vamos a desenterrar y entender el levantamiento): considere este escenario:
b();
console.log(a);
var a = "Hello World!";
function b()
console.log("Called b!");
Puedo llamar a la función b()
aunque se declare más tarde. Esto significa que JS Engine está haciendo algo antes de que se ejecute mi código, veamos qué:
JS Engine realiza los siguientes dos pasos al ejecutar cualquier código:
FASE DE CREACIÓN :
- JS Engine analiza: ejecute su código y
identifies variables & functions
creado por código (que se utilizará en la fase de ejecución) - Configuración del espacio de memoria para variables y funciones – “Izar”
- Izar – antes de que se ejecute su código, el motor JS reserva espacio de memoria para Var & Func utilizado dentro del código. Estas variables y funciones comprenden el contexto de ejecución de cualquier función que se ejecute. Todas las variables en JS están configuradas inicialmente como indefinidas.
FASE de ejecución: bastante simple de entender,
- Cuando el código se ejecuta línea por línea (por el intérprete de JS), puede acceder a las variables definidas dentro del contexto de ejecución.
- la asignación de variables se realiza en esta fase
Se crea un nuevo contexto de ejecución cada vez que se invoca una función.
Pila de contexto de ejecución:
Qué sucede cuando invocas una función:
function b()
function a()
b();
a();
-
Ahora en primer lugar
Global Execution Context
se va a crear (como se explicó anteriormente) -
luego comienza la ejecución y los encuentros del intérprete
call to function
y
a()here a new execution context is created pushed on top EC
Stackpor lo tanto, cada vez que invoca una función, se crea un nuevo EC y se coloca encima de EC Stack.
-
y ahora
EC for a()
esCREATED
intérprete ejecutará el código dentroa()
linea por linea -
entonces los encuentros del intérprete
call to function b()
esto crea otroEC
que se empuja hacia arriba oEC
apilar -
Cuándo
b()
termina, se sacará de la pila y luegoa()
terminará y todo el camino hastaGlobal EC
ver Pila de ejecución para el fragmento de código anterior
me he dirigido solamente los temas que están más estrechamente relacionados.
El contexto de ejecución es el envoltura alrededor de su código existente; que contiene código que no has escrito; pero es generado por el Motor JS.
Se compone de lo siguiente:
- Objeto global
- ‘esta’
- Ambiente exterior
- Tu código
Se crea un contexto de ejecución cada vez que ejecuta su archivo/aplicación .js. El primer paso en esta fase de creación es Izar. El motor JS reservas de espacio o configura la memoria para todas las variables y funciones definidas en tu código. Luego se accede a estos cuando su código se ejecuta línea por línea.
Por ejemplo:
b();
console.log(a);
var a = "hi!";
function b()
console.log("calling function");
Aquí el función b() y una variable Sin embargo, se accede a ambos antes de que se definan debido a elevación la consola no arrojará ningún error.
La salida se verá como – (pruébalo)
calling function
undefined
Observe cómo la función se ejecutó por completo, pero tenemos indefinido para la variable. Esto es porque Izar se realiza de manera diferente para funciones vs variables. La función como un todo se recoge en la memoria, pero para las variables, el espacio se reserva como un marcador de posición con el valor de indefinido. El valor real luego se reemplaza cuando el motor se ejecuta tu código línea por línea.
Espero que esto te aclare el concepto.
Sección de Reseñas y Valoraciones
Te invitamos a corroborar nuestra investigación mostrando un comentario y dejando una puntuación te estamos agradecidos.