Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] diferença na chamada dos valores de um objeto

Em aulas anteriores foram passadas duas formas de chamar as propriedades de um objeto:

objeto.propriedade;
objeto['propriedade']; //com aspas

só que nessa aula temos o seguinte:

for (let chave in estudante) {
  const tipo = typeof estudante[chave];
  if (tipo !== 'object' && tipo !== 'function') {
    const texto = `a chave ${chave} tem o valor ${estudante[chave]}`
    console.log(texto);
  }
}

a let chave, quando passada para a variável "tipo" em "estudante[chave]" não vai gerar uma chamada da propriedade com colchetes SEM as aspas, como deveria acontecer pra chamar corretamente? Queria entender porque nesse caso funciona dessa forma.

1 resposta
solução!

Oii Igor, tudo bem? No caso específico do seu código, onde você usa um loop for...in, a notação de colchetes é necessária para acessar as propriedades dinamicamente.

Vamos esclarecer isso com um exemplo prático.

  • Acessando Propriedades Estáticas:

Quando você conhece o nome da propriedade de antemão, você pode usar a notação de ponto:

const estudante = { nome: 'José Silva', idade: 32 };
console.log(estudante.nome); // José Silva
  • Acessando Propriedades Dinâmicas:

Quando você não sabe o nome da propriedade de antemão e está iterando sobre as propriedades do objeto, você deve usar a notação de colchetes:

const estudante = { nome: 'José Silva', idade: 32 };

for (let chave in estudante) {
  console.log(estudante[chave]); // José Silva, 32
}

No seu código, chave é uma variável que contém o nome da propriedade atual em cada iteração do loop for...in. Usar estudante[chave] permite que você acesse o valor da propriedade cujo nome está armazenado em chave.

Se você tentasse usar a notação de ponto, como estudante.chave, o JavaScript procuraria uma propriedade literalmente chamada "chave" no objeto estudante, o que não existe.

  • Notação de Colchetes com Variáveis

A notação de colchetes permite que você use variáveis para acessar propriedades:

const propriedade = 'nome';
console.log(estudante[propriedade]); // José Silva

Exemplo Completo baseado no seu código:

const estudante = {
  nome: 'José Silva',
  idade: 32,
  cpf: '12312312312',
  turma: 'JavaScript',
  bolsista: true,
  telefones: ['551199999998', '551199999993'],
  enderecos: [{
    rua: 'Rua Joseph Climber',
    numero: '45',
    complemento: 'apto 43'
  }]
};

for (let chave in estudante) {
  const tipo = typeof estudante[chave];
  if (tipo !== 'object' && tipo !== 'function') {
    const texto = `a chave ${chave} tem o valor ${estudante[chave]}`;
    console.log(texto);
  }
}

Assim estudante[chave] é usado para acessar o valor da propriedade atual, enquanto chave é a variável que contém o nome da propriedade.

Um abraço e bons estudos.