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.
: )