Javascript llamado función como una expresión

Código Javascript

<code>var d = function c() { console.log(c); };
d(); // function c() { console.log(c); }; 
c(); // Reference Error
</code>

Entiendo el concepto de elevación de variables donde las declaraciones de variables y las definiciones de funciones se elevan a la parte superior del alcance existente. Además, la definición de funciones en expresiones de funciones no se eleva.

Entonces, arriba estará

<code>var d;
d = function c() { console.log(c); };
d();
c();
</code>

Por lo tanto, d es una referencia a una función nombrada c

en la ejecuciónd() la función c se ejecuta en el ámbito global, donde no hay ninguna variable o propiedad llamada c. Pero todavía la consola se las arregla para registrar la definición de la función de c.Cuando lo intentec() Tengo un error de referencia. [Como yo esperaba]

El caso 2 demuestra que no hay ninguna propiedad de ventana llamada c. Entonces, ¿cómo?d() ¿Se las arregla para imprimir la definición de la c en ejecución?

¿Cada función tiene su propia definición en su ámbito local como propiedad?

Respuestas a la pregunta(1)

Su respuesta a la pregunta