Skip to content

Commit ae5c0ae

Browse files
committed
Create article-pt.md
Start to translate the article
1 parent 8a9997d commit ae5c0ae

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
# Operadores lógicos
2+
3+
Existem três operadores lógicos em JavaScript: `||` (OU), `&&` (E), `!` (NÃO).
4+
5+
Embora eles sejam chamados de "lógicos", podem ser aplicados a valores de qualquer tipo, não apenas a boolean. Seus resultados também podem ser de qualquer tipo.
6+
7+
Vamos ver os detalhes.
8+
9+
## || (OU)
10+
11+
O operador "OU" é representado com dois símbolos de linha vertical:
12+
13+
```js
14+
result = a || b;
15+
```
16+
17+
Na programação clássica, o operador OU é mencionado para manipular apenas valores booleanos. Se qualquer um dos seus argumentos for `true`, ele retorna `true`, se não, retorna `false`.
18+
19+
Em JavaScript, este operador é um pouco mais útil e poderoso. Mas primeir, vamos ver o que acontece com valores booleanos.
20+
21+
Existem quatro combinações lógicas possíveis:
22+
23+
```js run
24+
alert( true || true); // true
25+
alert( false || true); // true
26+
alert( true || false); // true
27+
alert( false || false); // true
28+
```
29+
30+
Como podemos ver, o resultado é sempre `true`, exceto para o caso onde os dois operandos são `false`.
31+
32+
Se um operando não é um boolean, ele é convertido em um boolean para sua verificação.
33+
34+
Sendo assim, o número `1` é tratado com `true` e o número `0` como `false`.
35+
36+
```js run
37+
if (1 || 0) { // funciona como if( true || false)
38+
alert( 'truthy!');
39+
}
40+
```
41+
42+
Na maioria das vezes, OU `||` é usado dentro de um `if` STATEMENT para testar se *qualquer* uma das condições dadas é `true`.
43+
44+
Por exemplo:
45+
46+
```js run
47+
let hour = 0;
48+
49+
*!*
50+
if (hour < 10 || hour > 18) {
51+
*/!*
52+
alert( 'O escritório está fechado.' );
53+
}
54+
```
55+
56+
Nós podemos passar mais condições:
57+
58+
```js run
59+
let hour = 12;
60+
let isWeekend = true;
61+
62+
if (hour < 10 || hour > 18 || isWeekend) {
63+
alert( 'O escritório está fechado.' ); // é final de semana
64+
}
65+
```
66+
67+
## OU encontrao primeiro valor verdadeiro
68+
69+
A lógica descrita acima é algo clássico. Agora, vamos ver as funcionalidades "extras" do JavaScript.
70+
71+
O algorítmo extendido funciona da seguinte forma.
72+
73+
Dando múltiplos valores OU's:
74+
75+
```js
76+
result = value1 || value2 || value3;
77+
```
78+
79+
O operador OU `||` faz o seguinte:
80+
81+
- Interpreta os operandos da esquerda para a direita.
82+
- Para cada operando, o converte para boolean. Se o resultado é `true`, para e retorna o valor original daquele operando.
83+
- Se todos os operandos foram interpretados (i.e. todos são `false`), retorna o último operando.
84+
85+
Um valor é retornado na sua forma original, sem conversão.
86+
87+
Em outras palavras, uma cadeia de OU `"||"` retorna o primeiro valor verdadeiro ou o último se nenhum `true` for encontrado.
88+
89+
Por exemplo:
90+
91+
```js run
92+
alert( 1 || 0); // 1 (1 é verdadeiro)
93+
alert( true || 'não importa o quê' ); // (true é verdadeiro)
94+
95+
alert( null || 1); // 1 (1 é o primeiro valor verdadeiro)
96+
alert( null || 0 || 1); // 1 (o primeiro valor verdadeiro)
97+
alert( undefined || null || 0); // 0 (todos falsos, retorna o último valor)
98+
```
99+
100+
Isso nos mostra algumas utilidades interessantes comparadas ao "puro, clássico, apenas-boolean OU".
101+
102+
1. **Obtendo o primeiro valor verdadeiro de uma lista de variáveis ou expressões.**
103+
104+
Imagine que temos várias variáveis que podem conter algum dado ou ser `null/undefined`. Como podemos encontrar a primeira com algum dado?
105+
106+
Nós podemos usar OU `||`:
107+
108+
```js run
109+
let currentUser = null;
110+
let defaultUser = "John";
111+
112+
*!*
113+
let name = currentUser || defaultUser || "unnamed";
114+
*/!*
115+
116+
alert( name ); // seleciona "John" - o primeiro valor verdadeiro
117+
```
118+
119+
Se ambos `currentUser` e `defaultUser` forem falsos, o resultado será `"unnamed"`.
120+
2. **

0 commit comments

Comments
 (0)