2
respostas

Declaração de variáveis

Quando o professor criou a lista das imagens dos carros percebi que ele não utilizou nenhuma palavrinha (var ou let) para indicar que é uma variável. e mesmo assim o programa conseguiu guardar estes valores.

E nessa aula de novo o professor cria uma variável nova (neste caso o xCarros na função passouTodaATela) e não precisou indicar que era uma variável em nenhum lugar.

Por quê isso acontece? Eu achava que sempre tinha que escrever var, let ou const antes de variáveis novas

2 respostas

Olá, Júlia! Tudo bem contigo?

Desculpe a demora em dar um retorno

Quando criamos uma variável utilizando var e depois queremos utilizar essa mesma variável porém com valor diferente, não precisamos iniciar utilizando a palavras var novamente. Por exemplo:

Vou criar duas variáveis:

var nome = "Cássio";
var sobrenome = "Murilo";

Agora vou atribuir um outro valor a variável nome

nome = "Santos";

e perceba que não precisei começar com var novamente.

Temos a situação quando crio essa variável fora de qualquer função e todos conseguem "ver" essa variável, inclusive dentro das funções,

var nome = "Cássio";
var sobrenome = "Murilo";

function nomeQualquer() {
nome = "Santos";
}

como foi o caso acima, e temos uma situação quando criamos essa variável dentro da função

function nomeESobrenome() {

    var nome = "Cássio";
    var sobrenome = "Murilo";

}

Já nessa situação, somente quem estiver dentro da função enxergará essas variáveis. Quem quiser utilizar essa variável fora da função, terá que criar outra utilizando var

Isso foi só uma explicação bem superficial, Júlia, pois tem muito conceito por trás disso.

Dê uma olhada neste link onde temos um artigo abordando diferenças entre var, let e const e peço que leia, neste outro link, que consta a documentação explicando sobre variáveis locais e globais, que foi o assunto que abordei!

Espero ter ajudado de alguma forma

Um abraço e bons estudos

Exatamente este é o ponto... as variáveis precisam ser chamadas em algum lugar (mesmo que seja fora da função) mas no caso do xCarro da função passouTodaTela() e da variavel imagemCarros na função preload() não temos a chamada em nenhum lugar.

// arquivo carro.js
function passouTodaTela(xCarro){
  return xCarro < -70;
}
//arquivo imagens.js
// imagens e sons do jogo

let imagemDaEstrada;
let imagemDoAtor;
let imagemCarro;
let imagemCarro2;
let imagemCarro3;

//sons do jogo

let somDaTrilha;
let somDaColisao;
let somDoPonto;

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

  somDaTrilha = loadSound("sons/trilha.mp3");
  somDaColisao = loadSound("sons/colidiu.mp3");
  somDoPonto = loadSound("sons/pontos.wav");
}