Se declarações
Uma única instrução if executará uma ação se uma condição for verdadeira. Se a condição for falsa, o programa executará a próxima instrução que estiver fora do bloco if. No exemplo a seguir, se a expressão isRaining
é verdade, então vamos putOnCoat()
e putOnRainboots()
então goOutside()
. Se isRaining
for falso, o programa só executará goOutside()
.
if (isRaining) { putOnCoat(); putOnRainboots(); } goOutside();
Esta é a forma geral para escrever uma instrução if:
if (condition) { statement; statement; ... }
o doença é uma expressão que tem o valor true ou false ou é avaliada como true ou false. Uma expressão verdadeira ou falsa é chamada de expressão booleana. Expressões booleanas são feitas com operadores relacionais.
Operadores relacionais
Um operador relacional compara dois valores e determina se a relação entre eles é verdadeira ou falsa. Eles podem ser usados para criar expressões booleanas para nossas condições. Aqui está uma lista de operadores relacionais com exemplos:
Operador | Significado | Exemplo | Significado |
---|---|---|---|
== | igualdade | x == y | x é igual a y? |
=== | igualdade estrita | x === y | X é igual a y em valor e tipo? |
!= | desigualdade | x != y | x não é igual a y? |
!== | desigualdade estrita | x !== y | X não é igual a y em valor e tipo? |
> | Maior que | x > y | x é maior que y? |
< | Menor que | x < y | x é menor que y? |
>= | maior ou igual | x >= y | x é maior ou igual a y? |
<= | Menor ou igual | x <= y | x é menor ou igual a y? |
É importante observar a diferença entre o operador de igualdade ==
e o operador de igualdade estrita ===
. Por exemplo, a expressão 2 == "2"
é verdade. Mas a expressão 2 === "2"
é falso. No segundo exemplo, os dois valores são tipos de dados diferentes e é por isso que a expressão é falsa. É uma boa prática usar ===
ou !==
.
O exemplo a seguir exibirá a mensagem “Você obteve um A”.
let grade = 93; if (grade >= 90) { console.log("You get an A"); }
Instruções If-Else
Uma instrução if-else executará um bloco de instruções se sua condição for verdadeira ou outro bloco se sua condição for falsa. O exemplo a seguir exibirá a mensagem “nome de usuário válido” porque a condição é verdadeira.
let username = "alberta"; if (username === "alberta") { console.log("Valid Username"); } else { console.log("Incorrect username. Try again."); }
Esta é a forma geral de uma instrução if-else:
if (condition) { statement; statement; etc. } else { statement; statement; etc. }
Questionário
Qual será a saída desse programa?
let isLoggedIn = false; if (isLoggedIn) { console.log("Welcome"); } else { console.log("You are not logged in"); }
Operador Ternário
As instruções if-else são tão comuns na programação que existe um operador ternário dedicado que permite escrever instruções if-else simples em uma única linha. O operador ternário é o único operador em JavaScript que usa três operandos.
O operador aceita uma condição no início seguida de um ponto de interrogação. O ponto de interrogação é seguido por uma expressão que é executada se a condição for avaliada como um valor verdadeiro. A expressão é seguida por dois pontos. Temos ainda outra expressão após os dois pontos que é executada se a condição for avaliada como um valor falso.
Vamos ver um exemplo para ficar claro. Começamos com um sale_price
que é igual ao max_price
variável. Agora, mudamos o sale_price
para 900 se o valor de big_discount
avalia para true
. Caso contrário, o sale_price
valor é definido como 950. Desde então, definimos big_discount
para true
a sale_price
valor é finalmente definido como 900.
let big_discount = true; let max_price = 1000; let sale_price = max_price; if(big_discount) { sale_price = 900; } else { sale_price = 950; }
Aqui está o código equivalente escrito usando o operador ternário na última linha. Basicamente, o sale_price
será definido como 900 se big_discount
avalia para true
e sale_price
será definido como 950 se big_discount
avalia para false
. Assim como no exemplo anterior, o valor de big_discount
está configurado para true
assim sale_price
é definido como 900.
let big_discount = true; let max_price = 1000; let sale_price = max_price; sale_price = big_discount ? 900 : 950;
Múltiplas instruções If-Else
Também é possível verificar mais de uma condição. Digamos que você esteja monitorando o estoque de um determinado produto em uma loja e realizando determinadas ações com base em sua contagem de estoque. O código ficaria mais ou menos assim:
let stock_count = 50; if(stock_count > 80) { console.log("Large stock"); } else if (stock_count > 20) { console.log("Be Ready to Restock"); } else if (stock_count > 0) { console.log("Please Restock"); } else { console.log("Stop Selling"); } // Outputs: Be Ready to Restock
Você deve notar como eu uso else if
e não apenas if
para escrever várias condições. Este é o caminho a seguir se você deseja apenas que um bloco seja executado. Usando apenas if
para escrever seus condicionais pode resultar na execução de vários blocos, conforme mostrado abaixo:
let stock_count = 50; if(stock_count > 80) { console.log("Large stock"); } if (stock_count > 20) { console.log("Be Ready to Restock"); } if (stock_count > 0) { console.log("Please Restock"); } else { console.log("Stop Selling"); } /* Outputs: Be Ready to Restock Please Restock */
Esta é a forma geral para escrever várias instruções if-else-if:
if (condition1) { statement; statement; etc. } else if (condition2) { statement; statement; etc. } else { statement; statement; etc. }
Operador Ternário Encadeado
Já discutimos como os operadores ternários podem nos ajudar a escrever um código mais compacto, substituindo simples if-else
declarações. Você pode usar operadores ternários encadeados de maneira semelhante para replicar vários if-else
declarações. Aqui está um exemplo:
let stock_count = 50; console.log((stock_count > 80) ? "Large stock" : (stock_count > 20) ? "Be Ready to Restock" : (stock_count > 0) ? "Please Restock" : "Stop Selling"); // Outputs: Be Ready to Restock
Assim como um normal if-else
declaração, começamos verificando se o stock_count
é superior a 80. Como não é, vamos para a próxima condição onde verificamos se stock_count
tem mais de 20. Isso avalia true
então obtemos a string “Esteja pronto para reabastecer”.
Declarações de troca
Uma instrução switch também é usada para executar condicionalmente alguma parte do seu programa. O exemplo a seguir implementa nosso conversor de numeral romano como uma instrução switch:
let num = 3; switch (num) { case 1: console.log("I"); break; case 2: console.log("II"); break; case 3: console.log("III"); break; case 4: console.log("IV"); break; case 5: console.log("V"); break; default: console.log("Invalid input"); }
Esta é a forma geral de uma instrução switch:
switch (expression) { case value1: statement; statement; etc. break; case value2: statement; statement; etc. break; default: statement; statement; etc. }
Cada caso representa um valor que nossa expressão pode assumir. Somente o bloco de código para o caso verdadeiro será executado. Incluímos uma instrução break no final do bloco de código para que o programa saia da instrução switch e não execute nenhum outro caso. O caso padrão é executado quando nenhum dos outros casos é verdadeiro.
Tarefa
Escreva uma instrução switch que exiba o dia da semana dado um número. Por exemplo, 1 = domingo, 2 = segunda-feira, etc.
Operadores lógicos
o operador e &&
e o operador ou ||
nos permite conectar duas expressões booleanas. O operador não !
nega uma expressão. Para ilustrar como os operadores lógicos funcionam, veremos uma tabela verdade. Uma tabela verdade contém todas as combinações de valores usadas com os operadores. eu uso P para representar a expressão da mão esquerda e Q para a expressão da mão direita.
&&
tabela verdade:
P | Q | P && Q |
---|---|---|
verdadeiro | verdadeiro | verdadeiro |
verdadeiro | falso | falso |
falso | verdadeiro | falso |
falso | falso | falso |
Lemos a tabela passando por cada linha. A primeira linha nos diz que quando P é verdade e Q é verdade, P && Q é verdade. O exemplo a seguir testa se x está entre 60 e 100 inclusive.
if (x >= 60 && x <= 100) console.log("Between 60 and 100.");
||
tabela verdade:
P | Q | P || Q |
---|---|---|
verdadeiro | verdadeiro | verdadeiro |
verdadeiro | falso | verdadeiro |
falso | verdadeiro | verdadeiro |
falso | falso | falso |
Este exemplo testa se 82 está fora do intervalo 60–100:
if (x < 60 || x > 100) console.log("Less than 60 or more than 100.");
!
tabela verdade:
P | !P |
---|---|
verdadeiro | falso |
falso | verdadeiro |
Exemplo:
if (! x) console.log("x iS false.");
Tarefa
Preencha a tabela com os valores que faltam.
P | Q | !P | !Q | !P && !Q | !P || !Q |
---|---|---|---|---|---|
verdadeiro | verdadeiro | ||||
verdadeiro | falso | ||||
falso | verdadeiro | ||||
falso | falso |
Algo útil para saber sobre operadores lógicos é que, se a expressão do lado esquerdo da &&
operador for falso, a expressão à direita não será verificada porque toda a instrução é falsa. E se a expressão do lado esquerdo de um ||
operador for verdadeiro, a expressão à direita não será verificada porque toda a instrução é verdadeira.
Análise
Um programa pode executar blocos de código condicionalmente usando expressões booleanas. Uma expressão booleana é escrita usando operadores relacionais. Os operadores lógicos nos permitem combinar expressões booleanas.
Uma única instrução if fornece ao programa um caminho alternativo a ser seguido se uma condição for atendida. As instruções if-else fornecem um segundo curso de ação se a condição for falsa. E as instruções if-else-if nos permitem testar várias condições. As instruções switch podem ser usadas como alternativa a uma instrução if-else-if quando você tiver várias condições para testar.