3.0 KiB
Desvios condicionais - if, if-else
Já vimos o operador condicional do Javascript (o único operador ternário da linguagem) que nos permite testar o valor de verdade de uma condição e retornar um valor x se a condição for verdadeira e um valor y se ela for falsa.
As estruturas sintáticas if
, if-else
e switch-case
podem fazer o mesmo e muito mais.
Nos exemplos abaixo vamos supor que existe um objeto
login
que contém os dados de login de um usuário de um sistema hipotético e que esse objeto tem um método chamadovalido()
que retornatrue
caso o login seja válido oufalse
caso contrário.
Exemplo de uso do operador condicional
.
const mensagem = login.valido() ? 'Olá!' : 'Quem é você?'
console.log(mensagem)
O mesmo pode ser escrito com if
let mensagem = 'Quem é você'
if(login.valido()) {
mensagem = `Olá!'
}
console.log(mensagem)
Ou pode ser escrito com if-else
let mensagem
if(login.valido()) {
mensagem = 'Olá!'
} else {
mensagem = 'Quem é você?'
}
console.log(mensagem)
Podemos transformar esses trechos de código em funções para facilitar seu uso em um programa mais extenso.
-
Usando
operador condicional
function mensagemDeLogin(login) { return login.valido() ? 'Olá!' : 'Quem é você?' } console.log(mensagemLogin(umLogin))
-
Usando
if
function mensagemDeLogin(login) { if(login.valido()) { return 'Olá!' } return 'Quem é você?' } console.log(mensagemLogin(umLogin))
-
Usando
if-else
function mensagemDeLogin(login) { if(login.valido()) { return 'Olá!' } else { return 'Quem é você' } } console.log(mensagemLogin(umLogin))
Para esse tipo de teste condicional
o operador condicional é mais conciso. Como esse tipo de teste é bastante comum, o operador condicional acaba sendo muito usado.
Quando usar if, if-else
As estruturas if
e if-else
permitem o uso de blocos de código, enquanto o operador condicional ? :
só permite expressões.
Por isso, se o código que precisamos executar não é uma simples expressão ou um simples valor a ser retornado, se precisarmos executar várias linhas de código em função do valor de verdade que está sendo testado, então precisamos usar if
, if-else
, porque eles permitem o uso de blocos de código.
Por exemplo, vamos supor que a mensagem de login devesse ser atribuída ao próprio objeto login
após o teste login.valido()
e depois retornada. Essas seriam 2 operações e precisariam ser escritas em um bloco de código. Assim:
function mensagemLogin(login) {
if(login.valido()) {
login.setMensagem('Olá!')
return login.getMensagem()
} else {
login.setMensgem('Quem é você?')
return login.getMensagem()
}
}