1
resposta

Por que meu navegador trava com função 'for'

Eu elaborei meu código para um parâmetro de velocidade básica dos carros e uma segunda linha incrementando as velocidade, conforme abaixo:

let yCarros = [28, 87, 150];
let xCarros = [600, 600,600];
let velocidade = 1.1;
let velocidadeCarros = [velocidade, velocidade + 0.7, velocidade + 1.1];
let yescalaCarros = [170, 110, 75];
let xescalaCarros = [60, 60, 45];

function mostraCarro(){
  for (let i = 0; i < imagensCarros.length; i = i + 1){
    image(imagensCarros[i], xCarros[i], yCarros[i], yescalaCarros[i], xescalaCarros[i])
  }
}

function moveCarro(){
  for (let i = 0; i < velocidadeCarros.length; i + 1){
    xCarros[i] -= velocidadeCarros[i];
    }
}

function voltarParaInicio(){
  if (xCarros[0] < -190){
    xCarros[0] = 600
  }
  if (xCarros[1] < -46){
    xCarros[1] = 600
  }
  if (xCarros[2] < -46){
    xCarros[2] = 600
  }
}

Quando não havia o laço funcionava desta forma como estão na linha:

let velocidade = 1.1;
let velocidadeCarros = [velocidade, velocidade + 0.7, velocidade + 1.1];
1 resposta

Altere o código de:

function moveCarro(){
  for (let i = 0; i < velocidadeCarros.length; i + 1){
    xCarros[i] -= velocidadeCarros[i];
    }
}

para:

function moveCarro(){
  for (let i = 0; i < velocidadeCarros.length; i = i + 1){
    xCarros[i] -= velocidadeCarros[i];
    }
}

Se o valor de i não for incrementado o laço rodará de forma infinita até travar o navegador.

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