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.


Discussion (1)

Collapse
duxtech profile image
Cristian Fernando Author

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.