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.


Discussion (1)

Collapse
duxtech profile image
Cristian Fernando Author • Edited on

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.