Boa noite Renan,
Apesar do seu código estar correto ele é pouco eficiente pois os 4 ifs sempre serão testados. A cada click o código testará 4 possibilidades, mesmo se a correta for a primeira. Em um cenário pequeno como o teste acima talvez a diferença de performance seja baixa, mas imagine se esse código for executado 1000 vezes por minuto. Com o elseif
poderíamos garantir que menos comparações sejam feitas, e com um switch
menos ainda. Dê uma olhada nos exemplos abaixo.
Com o elseIf faremos menos comparações caso as teclas chamadas sejam as primeiras. Ou seja o código fará no máximo 4 comparações, podendo fazer menos algumas vezes.
function leDoTeclado(evento) {
if(evento.keyCode == esquerda){
x = x - taxa;
}
else if (evento.keyCode == cima){
y = y - taxa;
}
else if (evento.keyCode==baixo){
y = y + taxa;
}
else if(evento.keyCode==direita){
x = x + taxa;
}
tecla=evento.keyCode;
console.log(tecla)
}
Já com alguma mudanças e um switch podemos garantir que somente uma comparação é feita.
function checkKey(e) {
var tecla = e.keyCode;
switch (tecla) {
case 37:
alert("Para Esquerda");
break;
case 38:
alert("Para Cima");
break;
case 39:
alert("Para Direita");
break;
case 40:
alert("Para Baixo");
break;
default:
alert("Use uma seta");
}
}
document.onkeydown = checkKey;
Tente sempre analisar o seu código e verificar se ele está executando "código morto" e como você pode evitar isso.
Abraços