3
respostas

[Dúvida] for in não retornou o número de telefone

No final da aula o professor faz um if para que o programa mostre só o que não é objeto. Entretanto, percebi que o código não retorna o campo telefone. Fiz com que o programa mostrasse o tipo de cada campo e ele estava considerando o campo telefone como objeto, apesar do campo telefone está com os colchetes (o que para mim, seria a evidência de um array). Qual motivo do JS considerar esse "array" como um objeto?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

3 respostas

Oi, Felipe

Quando o tipo não é especificado, o retorno é um "object",

pois tudo em Javascript é derivado de um "object".

Esses são os possíveis valores que são retornados pelo typeof:

TipoResultado
Undefined"undefined"
Null"object"
Boolean"boolean"
Number"number"
String"string"
Function "function"
Qualquer outro objeto"object"

Tudo é objeto? | Memes do JavaScript - Alura Cursos

Tudo é objeto? | Memes do JavaScript - Alura Cursos

Compreendi. Como posso especificar um tipo ao telefone para que possa retornar da mesma forma como o nome, a idade e o e-mail?


for (let chave in cliente) {
  let tipo = typeof cliente[chave];
  if (tipo !== "object" && tipo !== "function" || Array.isArray(cliente[chave])) {
    console.log(`A chave ${chave} tem o valor ${cliente[chave]}`);
  }
}