DEV Community

Cristian Fernando
Cristian Fernando

Posted on

Paracetamol.js💊| #133: Explica este código JavaScript

Explica el siguiente código JavaScript

Dificultad: Intermedio

const fn = function saludo(nombre){
  return `Hola ${nombre}`
}
console.log(fn("Ana"));
console.log(saludo("Pedro"));
Enter fullscreen mode Exit fullscreen mode

A. Hola Ana, Hola Pedro
B. Hola Ana, Uncaught ReferenceError: saludo is not defined
C. Uncaught ReferenceError: fn is not defined
D. Ninguna de las anteriores

Respuesta en el primer comentario.


Oldest comments (1)

Collapse
 
duxtech profile image
Cristian Fernando

Respuesta:
B. Hola Ana, Uncaught ReferenceError: saludo is not defined

En JavaScript podemos escribir funciones de dos maneras:

  • Funciones declaradas: con la palabra reservada function (sin guardar el resultado en ninguna variable)
  • Funciones expresadas: puede ser con la palabra reservada function o con una función de tipo flecha siempre y cuando se almacene el resultado en una variable.

Cuando tenemos una función expresada, la función puede tener un nombre, (en el ejemplo saludo), pero también la variable donde se almacena su resultado puede tener otro nombre, (en el ejemplo fn); todo esto es perfectamente valido para JavaScript.

El problema recae en como llamamos a la función, ¿con su nombre propio o con el nombre de la variable que guarda su resultado?

Para estos casos el interprete de JavaScript tomara siempre el nombre de la variable para poder llamar a la función, es por este motivo que cuando intentamos llamar a la función con saludo obtenemos un error de referencia.

Para evitar confusiones se recomienda que la función se anónima, de la siguiente manera:

const fn = function(nombre){
  return `Hola ${nombre}`
}
console.log(fn("Ana"));
console.log(fn("Pedro"));
Enter fullscreen mode Exit fullscreen mode

De esta manera usamos siempre el nombre de la función y ya no hay cabida a confusiones posibles.