Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

160
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda