• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

236
Views
¿Por qué la función JS se muestra en el alcance del bloque si se eleva en el alcance global?

Estaba jugando con los ámbitos de JS para comprender mejor el concepto. Haciendo eso, escribí el siguiente script:

 { let a; function x() { let p; var q; } } x();

Sorprendentemente, al depurar en la consola de desarrollo de Chrome, me di cuenta de que si detengo el script en la línea 2 o let a , puedo ver el alcance del bloque con la variable a y la función x como se ve en la captura de pantalla 1.

Además, al registrar las salidas de window.x undefined Sin embargo, tan pronto como salte al siguiente punto de interrupción, que es la línea 4 o let p , el alcance del bloque ya no está allí y se crea un alcance local . Ahora, al iniciar sesión, window.x genera la definición de la función.

Ahora, según tengo entendido, dado que puedo llamar a x() desde el ámbito global, significa que la declaración de la función está disponible en el ámbito global. Entonces, ¿por qué el enlace de la función no está disponible antes de la creación del contexto de ejecución de la función (si se eleva al alcance global)? ¿Y por qué escribir x() en la parte superior del bloque TypeError: x is not a function ?

captura de pantalla 1

Nota: No estoy escribiendo funciones como esta en ninguna parte, solo escribí este script para probar mi comprensión de los ámbitos. Disculpas si esta es una forma incorrecta de escribir funciones.

EDITAR por comentarios:

Chrome y FF se muestran undefined , mientras que Safari muestra la definición de la función.

 console.log(x); // logs undefined { let a; function x() { let p; var q; } } x();

almost 3 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error