DEV Community

Cristian Fernando
Cristian Fernando

Posted on

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

¿Qué imprime este código JavaScript?

function checkAge(data) {
  if (data === { age: 18 }) {
    console.log("You are an adult!");
  } else if (data == { age: 18 }) {
    console.log("You are still an adult.");
  } else {
    console.log(`Hmm.. You don't have an age I guess`);
  }
}

checkAge({ age: 18 });
Enter fullscreen mode Exit fullscreen mode
  • A: You are an adult!
  • B: You are still an adult.
  • C: Hmm.. You don't have an age I guess

Respuesta el el primer comentario.


Oldest comments (2)

Collapse
 
duxtech profile image
Cristian Fernando • Edited

La respuesta:

  • C: Hmm.. You don't have an age I guess

Cuando comparamos objetos hay que tener mucho cuidado.
Comparar primitivos es sencillo, pero recuerda que los objetos se almacenan en memoria teniendo en cuenta su referencia y no su valor.

Dicho esto, el objeto que pasamos como argumento a checkAge es el objeto { age: 18 }, este es diferente al objeto que evaluamos en los if de la función, por más que usemos comparación estricta, seguirán siendo objetos diferentes por que sus referencias son diferentes:

{ age: 18 } == { age: 18 } //false
{ age: 18 } === { age: 18 } //false
Enter fullscreen mode Exit fullscreen mode
Collapse
 
taneros profile image
Renatik

I'm JS dev and I use your articles to learn Spanish. Keep going! Spanish is fun.