1
resposta

Como ``imagemCarros`` funciona sem ser declarado em parte nenhuma do código?

Todas as listas de carro.js foram declaradas como variáveis let antes te terem valores atribuidos dentro das funções. Contudo, a lista imagemCarros não foi declarada como let, var ou const antes de ser invocada dentro da função preload(). Pela lógica até então mostrada o código, para funcionar, deveria ser escrito assim:

let imagemCarro;
let imagemCarro2;
let imagemCarro3;

//declaração da lista
let imagemCarros[3];

function preload(){
  imagemCarro = loadImage("imagens/carro-1.png");
  imagemCarro2 = loadImage("imagens/carro-2.png");
  imagemCarro3 = loadImage("imagens/carro-3.png");

  //atribuição de valores à lista
  imagemCarros = [imagemCarro, imagemCarro2, imagemCarro3];
}

ao invés da forma como foi escrita:

let imagemCarro;
let imagemCarro2;
let imagemCarro3;

function preload(){
  imagemCarro = loadImage("imagens/carro-1.png");
  imagemCarro2 = loadImage("imagens/carro-2.png");
  imagemCarro3 = loadImage("imagens/carro-3.png");
    imagemCarros = [imagemCarro, imagemCarro2, imagemCarro3];
}

Minha dúvida é:

Por que imagemCarros não precisa ser declarada? Como funciona?

Entendo não ser declarada dentro da função, por causa do escopo. Entendo não ser declarada com valores fora da function preload(), por causa dos valores das variáveis indíce ainda não terem sidos atribuidos e por causa de ser necessário mais linhas de código para carregar a imagem fora do preload. Mas por quê? Por que não há a declaração da lista em momento algum? Como sei quando não preciso declarar? Quando usar isso? Por que ela é diferentona? Se formou em Harvard?

P.S.: Foi mal pela surtada, mas essa dúvida está me matando.

: )

1 resposta

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software