DEV Community

Cristian Fernando
Cristian Fernando

Posted on

Paracetamol.js💊| #10: ¿Qué imprime este código JavaScript?

¿Qué imprime este código JavaScript?

function bark() {
  console.log("Woof!");
}

bark.animal = "dog";
Enter fullscreen mode Exit fullscreen mode
  • A: No pasa nada, es totalmente correcto.
  • B: SyntaxError. No es posible agregar propiedades a una función de esta manera.
  • C: undefined
  • D: ReferenceError

Respuesta en el primer comentario.


Top comments (1)

Collapse
 
duxtech profile image
Cristian Fernando • Edited

La respuesta es:
A: No pasa nada, es totalmente correcto.

WTF! Cuando vi que hacer esto es posible casi me caigo de la silla. Expliquemos por que:

Oiste o leiste alguna vez esta frase: "Todo en JavaScript es un objeto" Dejame decirte que no es mentira, literalmente todo es un objeto, todo lo que no sea un tipo primitivo en JavaScript es un objeto, desde arreglos, los propios objetos claro, las promesas, y también las funciones.

En el ejemplo, la función bark() funciona completamente bien:

function bark() {
  console.log("Woof!");
}
console.log(bark()) // Woof!
Enter fullscreen mode Exit fullscreen mode

Y si intentamos acceder a la propiedad animal no tendremos ningún problema:

function bark() {
  return "Woof!"
}

bark.animal = "dog";
console.log(bark.animal); // dog
Enter fullscreen mode Exit fullscreen mode

Este es un comportamiento muy jocoso del lenguaje y esta bueno saber que es posible hacer estas cosas aunque no tenga muchos casos de uso.