Aquí hay algo que ejecuté
function c(){ return 2+3; } console.log(c); console.log(c()); Entiendo lo que sucede detrás de escena cuando se ejecuta console.log(c()) , pero cuando se trata de console.log(c) estoy un poco confundido.
Para console.log(c) obtengo el resultado:
fc(){ return 2+3; }¿Que está sucediendo aquí?
¿Almacena c toda la definición de la función o almacena la dirección de la definición de la función?
Si almacena toda la definición de la función, ¿en qué forma almacena? ¿Se almacena como cadena?
O si almacena la dirección, ¿cómo? Porque cuando el proceso se ejecuta, la memoria contiene las instrucciones de la máquina, no el programa JavaScript. Entonces, ¿de dónde vino?
Una función es como un libro, cada uno tiene un título único y se almacenan en algún lugar de su almacenamiento. Entonces, cuando diga "Dame la función con el nombre 'c', por favor", te dará la función completa, no solo el nombre. Al igual que cuando estás en una biblioteca y pides un libro específico, te van a dar el libro completo y no solo la portada con el título.
si solo desea imprimir el nombre, simplemente diga console.log(c.name)
Espero que esto haya ayudado :)
Lo que se almacena en la memoria es el código fuente de la función. c es una referencia (dirección) a la ubicación en la memoria donde se almacena ese código fuente. Cuando el código se ejecuta, solo entonces se interpreta en instrucciones de máquina. Creo que incluso los motores como V8 todavía interpretan el código en tiempo de ejecución (aunque alguien con más conocimientos sobre ese tipo de motores puede corregirme aquí si me equivoco).
Como dijo Yousaf en su respuesta , llamar a cualquier objeto solo por su nombre automáticamente invoca el método toString() .
No sé si es posible en JavaScript acceder a la dirección exacta, como podría hacerlo en un lenguaje de nivel inferior como C.