1
resposta

Exercício 03

const anoAtual = new Date().getFullYear();

const livro = {
  
  titulo: 'Missão Secreta na Transamazonica',
  autor: 'Assis Brasil',
  anoPublicacao: 2000,
  idadePublicacao: anoAtual - anoPublicacao,
  genero: 'Suspense'
  
}

console.log(`${livro['titulo']}, ${livro['autor']}, ${livro['anoPublicacao']}, ${livro['idadePublicacao']}, ${livro['genero']}`); 

Ao fazer dessa forma tenho um erro de declaração: anoPublicacao is not defined

Na 'minha cabeça' ano de publicação foi definido dentro do objeto livro, não foi?

Outro detalhe é que eu optei por imprimir tudo em apenas um único console.log( )

1 resposta

Bom dia, Rosemberg.

Muito bem! Não há problema nenhum em imprimir tudo em apenas um console.log, vai depender da sua regra de negócio.

Com relação à sua dúvida:

  • Na 'minha cabeça' ano de publicação foi definido dentro do objeto livro, não foi? Seria, mas o erro acontece dentro do objeto livro.
const livro = {
  titulo: 'Missão Secreta na Transamazonica',
  autor: 'Assis Brasil',
  anoPublicacao: 2000,
  idadePublicacao: anoAtual - anoPublicacao,  // O erro está aqui, pois você está chamando anoPublicacao, sendo que esse atributo nem sequer existe ainda, pois o livro não foi definido. ainda. Caso existisse, ele seria acessado por this.anoPublicacao, mas ele ainda estava na metade da execução, então nem o this se refere a ele ainda.
  genero: 'Suspense'
}

Para isso você deveria definir antes o ano de publicação, assim:


const anoAtual = new Date().getFullYear();
const anoPublicacao = 2000;

const livro = {
  
  titulo: 'Missão Secreta na Transamazonica',
  autor: 'Assis Brasil',
  anoPublicacao: anoPublicacao,
  idadePublicacao: anoAtual - anoPublicacao,
  genero: 'Suspense'
  
}

console.log(`${livro['titulo']}, ${livro['autor']}, ${livro['anoPublicacao']}, ${livro['idadePublicacao']}, ${livro['genero']}`); 

Ou passar o 2000 hard coded para a idadePublicacao.

Outra dica, se tiver uma dúvida, colocar a tag de dúvida no tópico do fórum ajuda, pois às vezes eu, ou outras pessoas que vêm aqui tirar dúvidas podemos acabar passando reto achando que não tem dúvidas e nem abrimos o tópico para ver (o scuba team vê tudo, eu acho, mas mesmo para eles se organizarem é bom colocar as tags).