¿Qué imprime este código JavaScript?
function bark() {
console.log("Woof!");
}
bark.animal = "dog";
- 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)
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:Y si intentamos acceder a la propiedad
animal
no tendremos ningún problema: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.