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.