Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

162
Vistas
¿Por qué las expresiones de funciones no están incluidas en el objeto variable del contexto de ejecución?

Al pasar por la parte del contexto de ejecución de JavaScript.The Core. (1st ed.) por Dmitry Soshnikov, encontré esta línea que dice explícitamente que las expresiones de función no están incluidas en la propiedad de objeto variable de un contexto de ejecución.

Un objeto variable es un contenedor de datos asociados con el contexto de ejecución. Es un objeto especial que almacena variables y declaraciones de funciones definidas en el contexto.

Tenga en cuenta que las expresiones de funciones (a diferencia de las declaraciones de funciones) no se incluyen en el objeto variable.

Entiendo que la representación de un contexto de ejecución como objetos es un concepto abstracto y los detalles pueden diferir de un caso a otro, pero aún así, me interesa saber por qué el autor dice explícitamente que las expresiones de funciones no deben incluirse.

AFAIK, las expresiones de función son tratadas como cualquier otra variable por los motores de JavaScript, y no veo una razón por la que deban omitirse de los objetos variables .

Edit1: según la respuesta de Quentin , mi concepción acerca de las expresiones de funciones que los motores JS tratan como variables ordinarias (como se indica en el párrafo anterior) era incorrecta. Pero aún así, la pregunta sigue en pie.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Me interesa saber por qué el autor dice explícitamente que no se deben incluir expresiones de funciones.

No lo sabemos, tendrías que preguntarle al autor :-)

Si hubiera escrito esta definición, incluso habría omitido funciones por completo:

" Un objeto variable es un contenedor de datos asociado con el contexto de ejecución. Es un objeto especial que almacena variables definidas en el contexto. "

Entonces después uno puede aclarar que

" Las variables se definen mediante declaraciones de variables, declaraciones de funciones y parámetros de funciones. Nada más crea variables. "

Claro, también debe comprender que existe una diferencia entre las declaraciones de función y las expresiones de función, y que depende del contexto léxico cuál de las dos crea una palabra clave de function . Sin embargo, esto lo esperaría en una sección sobre análisis sintáctico y evaluación de expresiones, no en la discusión de objetos variables.

about 4 years ago · Juan Pablo Isaza Denunciar

0

AFAIK, las expresiones de función son tratadas como cualquier otra variable por los motores de JavaScript

no lo son

Una expresión de función se evalúa como un valor que es una función . A diferencia de una declaración de función, no crean una variable como efecto secundario.

Declaración

 function bar () { };

Esto crea una función llamada (es decir, con un nombre interno de) bar y la almacena en una variable llamada bar.

Expresión

 const foo = function bar() { };

Aquí const foo crea una variable llamada foo.

La expresión de la función crea una función llamada bar (de nuevo, un nombre interno) y la asigna a foo .

No se crea ninguna bar de variables.

IIFE

 (function bar() { })();

Esta expresión de función invocada inmediatamente crea una función denominada bar y la invoca. No hay bar variable. La función no está almacenada en ninguna parte.


Tenga en cuenta que estoy hablando de la puntuación en la que se define la función anteriormente. Las cosas se complican un poco más dentro de la declaración de funciones y expresiones.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Después de un poco de lectura cuidadosa, me di cuenta de que el autor había estado usando el término 'expresión de función' tanto para lo que generalmente llamamos IIFE como para la expresión de función general.

En otro artículo , el autor aclara que las expresiones de función que se guardan en una variable están, de hecho, incluidas en el objeto variable. Son los IIFE los que no están incluidos, lo que tiene sentido.

Entonces, para resumir, las expresiones de función están incluidas en el objeto variable de un contexto de ejecución dado, mientras que los IIFE no lo están.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda