JavaScript - 6. Condições


Na programação, cerca de 15% de todas as instruções, são instruções de condições, que são testes para verificar se é verdadeiro ou falso determinada informação para executar uma outra ação.

No Javascript, também temos as condições de comparação, que podem ser feitas com a instrução if, ou sem o mesmo, usando apenas operadores de comparação.

Veja o seguinte exemplo:

var idade = 18;

if ( idade > 18 ) {
    console.log("maior que 18 anos de idade");
} else {
    console.log("menor ou igual a 18 anos de idade");
}

E de forma resumida, a mesma instrução:

var idade = 18;
console.log( idade > 18 ? "maior que 18 anos de idade" : "menor ou igual a 18 anos de idade" );

Veja que podemos comparar com a seguinte forma:

">" = Comparação de um valor é maior que outro.
"<" = Comparação de um valor se é menor que o outro.
">=" = Maior ou igual
"<=" = Menor ou igual
"==": Comparação de igualdade, compara se o valor é igual.
"===": Comparador de tipo de variável/objeto e valor.
"!=": Diferente.
"!==": Diferente inclusive o tipo da variável/objeto.

No caso da repetição do sinal de igual, se for comparar:

x = 10;
y = "10";
if ( x = y ) {
   // Retorna verdadeiro!
}
if ( x == y ) {
   // Retorna falso, porque apesar de ser mesmo valor, um é numérico, e outro é um texto, uma String!
}

Operadores lógicos:

"&&": E.
"||": Ou.
"!": Negação.

if ( idade > 18 && idade < 35 ) {
     alert("Você tem entre 18 anos de idade, e 35 anos.");

Você pode também fazer um único if contendo vários elementos para teste da seguinte forma:
var idade = 15;
var mensagem = "";
if ( idade == 18 ) {
    mensagem = "Jovem de 18 anos"
} else if (idade < 18 ) {
    mensagem = "Menor de 18 anos de idade."
} else if (idade > 18 && idade < 40 ) {
    mensagem = "Maior de 18 anos de idade e menor que 40 anos de idade."
} else {
    mensagem = "Maior ou igual a 40 anos de idade."
};
E há um outro método semelhante, usando switch da seguinte forma, equivalente ao código acima:
var idade = 15;
var mensagem = "";
switch(true) {
  case (idade == 18):
    mensagem = "Jovem de 18 anos";
    break;
  case (idade < 18):
    mensagem = "Menor de 18 anos de idade.";
    break;
  case (idade > 18 && idade < 40):
    mensagem = "Maior de 18 anos de idade e menor que 40 anos de idade.";
    break;
  default:
    mensagem = "Maior ou igual a 40 anos de idade.";
};
Neste caso, temos uma peculiaridade: você pode passar dentro do switch a idade para ser testada, mas neste caso, você não poderá usar condições, porque o switch irá tratar o valor dentro do case com a condição de comparação que valida o objeto e valor: "===", ou seja, o switch é bom para pequenos intervalos, como por exemplo um "liga/desliga".
var opcao = 3 ;
var interruptor = "";
switch(opcao) {
  case 1:
    mensagem = "Ação 1";
    break;
  case 2:
    mensagem = "Ação 2";
    break;
  case 3:
    mensagem = "Ação 3";
    break;
  default:
    mensagem = "Opção inválida, entre somente com a opção 1,2 ou 3.";
};
Se você for colocar uma condição, como por exemplo:
var opcao = 3 ;
var interruptor = "";
switch(opcao) {
  case opcao == 1:
    mensagem = "Ação 1";
    break;
  case opcao == 2:
    mensagem = "Ação 2";
    break;
  case opcao == 3:
    mensagem = "Ação 3";
    break;
  default:
    mensagem = "Opção inválida, entre somente com a opção 1,2 ou 3.";
};
O resultado disto sempre será "Opção inválida, entre somente com a opção 1,2 ou 3.", porque ele está esperando que a variável opção tenha o valor "true", mas ela tem 1, 2 ou 3. Caso haja o valor realmente true no objeto e ele seja do tipo boolean:
var opcao = true ;
var interruptor = "";
switch(opcao) {
  case opcao == 1:
    mensagem = "Ação 1";
    break;
  case opcao == 2:
    mensagem = "Ação 2";
    break;
  case opcao == 3:
    mensagem = "Ação 3";
    break;
  default:
    mensagem = "Opção inválida, entre somente com a opção 1,2 ou 3.";
};
Aí sim irá acionar a "Ação 1". Como tem o break, ele não testará o restante, parando nesta ação, porque nesta foi a primeira que atendeu ao valor "true". Caso o valor do var opcao fosse "true" contendo aspas duplas, também iria cair no default. Veja mais sobre break e continue na próxima matéria.

Resumindo condições

Há uma forma de resumir condições simples em uma única linha para valores de variável, como por exemplo:

var precoCusto = 8;
var margem = function(precoCusto) {return ( precoCusto / 100 * 30 ) };
var preco = ( margem(precoCusto) < 10 ? precoCusto + 5 : margem(precoCusto) );
console.log(preco);

Bom, na variável preco, temos:

var preco = ( condição ? valor verdadeiro : valor falso );

E se você reparou na função, existe um erro: será que você encontra qual é o erro proposital? Não faça isto em uma loja virtual, hein!

Comentários