JS-0204 - JavaScript Completo ES6 - Boolean e Condicionais
Aplicando lógica no JS
Para o tipo de dado Boolean existem dois valores possíveis, true ou false (não utilize estes termos com nome de variáveis pois são palavras reservadas). Ex:
var estudante = true;
var funcionario = false;
Os valores booleanos são utilizados para realizar comparações condicionais. Para realizar operações condicionais em JS é utilizado o if, que verifica a condição passada como parâmetro é true, e o else, caso seja false. Ex:
var estudante = true;
if(estudante) {
console.log('Está estudando');
} else {
console.log('Não está estudando');
}
// retorna "Não está estudando" e não executa o else
O else final não é estritamente necessário, mas é uma boa prática para previnir a não validação do parâmetro.
Para realizar uma segunda ou inumeras validações pode ser utilizado o else if. Neste caso, caso o if não seja true, ele testa a condição seguinte. Ex:
var estudante = true;
var funcionario = false;
if(funcionario) {
console.log('Está empregado');
} else if(estudante) {
console.log('Está estudando');
} else {
console.log('Não está empregado e não está estudando');
}
// retorna Está estudando
Há a possibilidade de abreviação do if caso o retorno seja apenas uma linha de código suprimindo a abertura e o fechamento de chaves. Ex:
if(funcionario) console.log('Está empregado');
else if (estudante) console.log('Está estudando');
else console.log('Não está empregado e não está estudando');
ou
if(funcionario)
console.log('Está empregado');
else if (estudante)
console.log('Está estudando');
else
console.log('Não está empregado e não está estudando');
Poderemos também utilizar o operador ternário em abreviação ao if e else. Nesse caso é passada uma condição e caso o retorno seja verdadeiro, a variável será igual ao valor após o sinal de interrogação, caso seja falso, será o valor após os dois pontos. É possível encadear os operadores ternários. Ex:
var estudante = true;
var ocupacao = (estudante) ? 'Está estudando' : 'Não está estudando';
console.log(ocupacao) // Está estudando
var estudante = true;
var funcionario = false;
var ocupacao = (estudante) ? 'Está estudando' : (funcionario ? 'Está trabalhando' : 'Não está trabalhando e não está estudando');
console.log(ocupacao) // Está trabalhando
Geralmente utilizamos o operador ternário quando precisamos atribuir um valor para uma variável, dependendo de uma condição.
A utilização de else if encadeados não é uma boa prática, e para utilizar a verificação condicional em um conjunto grande de possibilidades há a possibilidade de utilização do switch.
Com o switch você poderá realizar verificações em diferentes condição checando se o valor é verdadeiro. O parâmetro de validação é passado utilizando o case e caso seja validado como true, será executado o que houver no case. Para que após a execução deste case não seja continuada a validação no case seguinte é utilizado o break que encerra a verificação. Assim como o else, no switch é possível deixar uma execução final no caso da invalidação total das condições, utilizando default. Ex:
var minhaProfissao = 'Militar';
switch (minhaProfissao) {
case 'Professor':
console.log('Sou Professor.');
break;
case 'Médico':
console.log('Sou Médico.');
break;
case 'Padeiro':
console.log('Sou Padeiro.');
break;
default:
console.log('Nenhuma das opções.');
} // retorna Nenhuma das opções.
Existem valores que retornam true e outros que retornam false quando verificados em uma expressão booleana. Eles são chamados de Truthy e Falsy. Os valores abaixo são falsy:
if(false)
if(0) // ou -0
if(NaN)
if(null)
if(undefined)
if('') // ou "" ou ``
Todos os demais são truthy.
Os operadores lógicos podem ser utilizados em JS.
O operador Lógico de Negação "!" inverte o valor booleno de uma operação. Utilizando duas vezes o operador de negação, !!, é possível verifica se qualquer condição é realmente truthy ou falsy. Ex:
if(!true) // false
if(!1) // false
if(!'') // true
if(!undefined) // true
if(!!' ') // true
if(!!'') // false
Operadores de comparação sempre retornam um valor booleano. Ex:
10 > 5; // true
5 > 10; // false
20 < 10; // false
10 <= 10 // true
10 >= 11 // false
O operador == faz uma comparação de valores, sem checar o tipo de dado. O === faz uma comparação estrita, validando o valor e o tipo do dado. Ex:
10 == '10'; // true
10 == 10; // true
10 === '10'; // false
10 === 10 // true
10 != 15 // true
10 != '10' // false
10 !== '10' // true
O operador lógico && (AND) compara se uma expressão e a outra é verdadeira e retorna o valor de acordo com o resultado desta condicional de acordo com os tipos das condições.
Se ambos os valores forem true ele irá retornar o último valor verificado. Se algum valor for false ele irá retornar o mesmo e não irá continuar a verificar os próximos.Ex:
true && true; // true
true && false; // false
false && true; // false
'Gato' && 'Cão'; // 'Cão'
(5 - 5) && (5 + 5); // 0
'Gato' && false; // false
(5 >= 5) && (3 < 6); // true
O operador lógico || (OR) compara se uma expressão ou outra é verdadeira.