Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

161
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!