Uma forma comum de executar lógica condicionalmente em JavaScript é a condicional.
É constituída pela palavra-chave if, por uma condição entre parênteses e por um bloco de código entre chavetas.
O bloco de código só é executado se a condição for avaliada como true.
if (condition) {
// code that is executed if "condition" is true
}
Pode ser usada sozinha ou combinada com a palavra-chave else.
if (condition) {
// code that is executed if "condition" is true
} else {
// code that is executed otherwise
}
Para aninhar outra condição na instrução else, podes usar else if.
Repara que não existe a palavra-chave elseif em JavaScript.
Em vez disso, escreve else seguido de outra condicional.
if (condition1) {
// code that is executed if "condition1" is true
} else if (condition2) {
// code that is executed if "condition2" is true
// but "condition1" was false
} else {
// code that is executed otherwise
}
Em teoria, podes aninhar tantas condições adicionais quantas quiseres.
Na prática, nesses casos usarias antes uma instrução switch.
if (condition1) {
// ...
} else if (condition2) {
// ...
} else if (condition3) {
// ...
} else if (condition4) {
// ...
} else {
// ...
}
Ao construir condições complexas, consulta a tabela de precedência de operadores para evitares parênteses desnecessários.
if (num >= 0 && num < 1) {
// ...
}
// The inner brackets are obsolete because relational operators
// have higher precedence than logical operators.
<!-- prettier-ignore-start -->
if ((num >= 0) && (num < 1)) {
// ...
}
<!-- prettier-ignore-end -->
Além disso, considera usar variáveis adicionais para tornar o código mais legível.
const isPositive = num >= 0;
const isSmall = num < 1;
if (isPositive && isSmall) {
// ...
}
Em JavaScript, a condição não tem de ser do tipo boolean. Se for fornecido outro tipo que não boolean num contexto booleano, como a condicional, o JavaScript converte implicitamente o valor para boolean. Consulta o conceito de conversão de tipos para saberes que valores são truthy e falsy, respetivamente.
const num = 4;
if (num) {
// this code block will be executed because 4 is truthy
}
Se quiseres executar apenas uma instrução no bloco de código do if ou do else, é possível omitir as chavetas em JavaScript.
if (condition) doSomething();
// or
if (condition)
doSomething();
Isto é usado, por vezes, quando se verifica uma condição de erro, por exemplo. Em geral, não é recomendado, porque é fácil esquecermo-nos de voltar a acrescentar as chavetas quando adicionamos uma segunda instrução que deve depender da mesma condição.
Ao escrever funções, é um padrão comum omitir o bloco else e usar um return antecipado no bloco if.
Em muitos casos, isto reduz o aninhamento e torna o código mais legível e mais fácil de seguir.
function checkNumber(num) {
let message = '';
if (num === 0) {
message = 'You passed 0, please provide another number.';
} else {
message = 'Thanks for passing such a nice number.';
}
return message;
}
// Can also be written as ...
function checkNumber(num) {
if (num === 0) {
return 'You passed 0, please provide another number.';
}
return 'Thanks for passing such a nice number.';
}