Switch no javascript

Este é um post muito básico sobre javascript, se você é ninja provavelmente não tem o que aprender com este post.

Switch é uma forma de fazer verificações diversas (do tipo "else if") em uma váriavel, estava criando um código que começou com uma verificação (um if) e com o tempo foi crescendo, quando percebi estava com 4 verificações if else até um colega me alertar para o uso do switch.

switch(n){
case 1:
  execute code block 1
  break;
case 'lorem':
  execute code block 2
  break;
default:
  code to be executed if n is different from case 1 and 2
}

Útil para quando você só precisa fazer comparação com uma única variável e mais performático que uma corrente de "if else".

Utilizando o cronômetro que o Chris postou aqui fiz um teste de performance no javascript comparando o switch e o if else (usando Firefox).

Código do teste de performance

function TimeCounter() {
this.startDate = null; this.ellapsedTime = null; this.start = function() { this.startDate = new Date(); } this.stop = function() { return (new Date() - this.startDate)/1000; } }

v = 0;
n = 'label';
var t = new TimeCounter();
t.start();
for(var i = 0;i < 1000000;i++){
switch(n){
case 'lorem':
v = v+1;
break;
case 2:
v = v+1;
break;
case 'llam':
v = v+1;
break;
case 'label':
v = v+1;
break;
default:
v = v+1;
}
}
i = t.stop();
console.log('Switch: ' + i);
v = 0;
t.start();
for(var i = 0;i < 1000000;i++){
if(n == 2){ v = v+1; }
else if(n == 'llam'){ v = v+1; }
else if(n == 'label'){ v = v+1; }
else{ v = v+1; } }
i = t.stop();
console.log('Else if: ' + i);

Resultados:

Switch: 4.345 s

Else if: 6.262 s

Sem querer levantar muito preciosimo para o código (vai só atrapalhar sua produtividade), fica aí a dica de fazer benchmark de código de suas aplicações quando estiver notando algum problema de performance, é uma boa forma de encontrar gargalos!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *