DEV Community

Sergio Francisco
Sergio Francisco

Posted on

JS faz sentido

Image description

Sempre vejo esses Memes de js de como a linguagem não funciona porque acontece tal coisa absurda, e normalmente é engraçado mas também pode fazer com que pessoas sem experiencia, como eu mesmo, se confundam ainda mais quando estão estudando.

Esse aqui não é nada diferente.
Como o operador "in" funciona: ele é busca se a chave existe no objeto.

const pirate = {
    hat: "straw",
    shoes: "flipflops",
    power: "rubber",
  };
 // Defini o objeto pirate aqui. E preciso saber se ele tem poder.
if ("power" in pirate) { // TRUE
  return "Esse pirata comeu uma fruta"
}
// Mas o objeto pirate poderia ser diferente.
const pirate = {
   hat: "bandana",
   shoes: "shoe",
   weapon: "swords"
};

if ("power" in pirate) { // FALSE
  return "Esse pirata comeu uma fruta"
}

Enter fullscreen mode Exit fullscreen mode

O exemplo acima mostra um uso para o operador in, algo util porque muitas vezes podemos receber um objeto sem a chave e precisamos verificar isso.
E vejam, não existe nas propriedades nenhum "power" apenas nas chaves.

Ai você pode se perguntar: Mas então como funciona num array, se array não é um objeto?
Na verdade, o array é um objeto especial onde seus indices são as chaves.

const array = [1,2,3,4];

Object.keys(array) //[0,1,2,3]

const object = {
  0: 1,
  1: 2,
  2: 3,
  3: 4
}

typeof Array() // 'object'
Enter fullscreen mode Exit fullscreen mode

E o javascript tenta não nos punir tanto, então quando passa o operador em um array ele faz essa conversão por baixo dos panos.
Assim como os casos de "0" e 0, porque ele transforma qualquer valor em string.

let number = 0;
let string = "0";

string === number.toString(10) // TRUE
Enter fullscreen mode Exit fullscreen mode

Nas próximas vezes que ver um meme assim, antes de achar "Nossa, realmente não faz sentido" procure pelo motivo daquilo e vai perceber que é tudo esperado. E na maioria dos casos você nunca vai ver nenhum desses exemplos de meme na vida real.

in - JavaScript | MDN

Top comments (1)

Collapse
 
brendonlopes profile image
Brendon Lopes

Sabedoria desbalanceada