Skip to content

Commit 69acd52

Browse files
authored
Update article.md
Add file revision with some changes.
1 parent f2b7444 commit 69acd52

File tree

1 file changed

+42
-42
lines changed

1 file changed

+42
-42
lines changed
Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,37 @@
11
# Comparações
22

3-
Conhecemos muitos operadores de comparação de matemática:
3+
Conhecemos muitos operadores de comparação em matemática:
44

55
- Maior/menor que: <code>a &gt; b</code>, <code>a &lt; b</code>.
66
- Maior/menor ou igual que: <code>a &gt;= b</code>, <code>a &lt;= b</code>.
7-
- Igual: `a == b` (observe o sinal de igual duplo `=`. Um único sinal de igual `a = b` significaria uma atribuição).
8-
- Diferente. Em matemática, a notação é <code>&ne;</code>, mas em JavaScript é escrita como uma atribuição com um sinal de exclamação antes: <code>a != b</code>.
7+
- Igual: `a == b` (observe o sinal de igual duplo `=`; um único sinal de igual `a = b` significa uma atribuição).
8+
- Diferente. Em matemática a notação é <code>&ne;</code>, mas em JavaScript é escrito como uma atribuição com um sinal de exclamação antes: <code>a != b</code>.
99

1010
## Booleano é o resultado
1111

1212
Como todos os outros operadores, uma comparação retorna um valor. Nesse caso, o valor é um booleano.
1313

14-
- `true` -- significa "sim", "correto" ou "verdade".
14+
- `true` -- significa "sim", "correto" ou "verdadeiro".
1515
- `false` -- significa "não", "errado" ou "falso".
1616

1717
Por exemplo:
1818

1919
```js run
20-
alert( 2 > 1 ); // true (correct)
21-
alert( 2 == 1 ); // false (wrong)
22-
alert( 2 != 1 ); // true (correct)
20+
alert( 2 > 1 ); // true (verdadeiro)
21+
alert( 2 == 1 ); // false (falso)
22+
alert( 2 != 1 ); // true (verdadeiro)
2323
```
2424

2525
Um resultado de comparação pode ser atribuído a uma variável, assim como qualquer valor:
2626

2727
```js run
28-
let result = 5 > 4; // assign the result of the comparison
28+
let result = 5 > 4; // atribui o resultado da comparação
2929
alert( result ); // true
3030
```
3131

3232
## Comparação de strings
3333

34-
Para ver se uma string é maior que outra, o JavaScript usa o chamado ordem "dicionário" ou "lexicográfico".
34+
Para ver se uma string é maior do que outra, o JavaScript usa a chamada ordem de "dicionário" ou "lexicográfica".
3535

3636
Em outras palavras, as strings são comparadas letra a letra.
3737

@@ -46,12 +46,12 @@ alert( 'Bee' > 'Be' ); // true
4646
O algoritmo para comparar duas strings é simples:
4747

4848
1. Compare o primeiro caractere de ambas as strings.
49-
2. Se o primeiro caractere da primeira string for maior (ou menor que) da outra, a primeira string será maior (ou menor) que a segunda. Nós terminamos
49+
2. Se o primeiro caractere da primeira string for maior (ou menor) que o da outra, a primeira string será maior (ou menor) que a segunda. Nós terminamos.
5050
3. Caso contrário, se os primeiros caracteres das duas sequências forem os mesmos, compare os segundos caracteres da mesma maneira.
5151
4. Repita até o final de qualquer string.
52-
5. Se ambas as seqüências terminarem no mesmo comprimento, elas serão iguais. Caso contrário, a string mais longa é maior.
52+
5. Se ambas as seqüências terminarem com o mesmo comprimento, elas serão iguais. Caso contrário, a string mais longa é maior.
5353

54-
Nos exemplos acima, a comparação `'Z' > 'A'` chega a um resultado no primeiro passo enquanto as strings `"Glow"` e `"Glee"`são comparadas caractere por caractere:
54+
Nos exemplos acima, a comparação `'Z' > 'A'` chega a um resultado no primeiro passo, enquanto as strings `"Glow"` e `"Glee"`são comparadas caractere por caractere:
5555

5656
1. `G` é o mesmo que `G`.
5757
2. `l` é o mesmo que `l`.
@@ -60,7 +60,7 @@ Nos exemplos acima, a comparação `'Z' > 'A'` chega a um resultado no primeiro
6060
```smart header="Not a real dictionary, but Unicode order"
6161
O algoritmo de comparação dado acima é aproximadamente equivalente ao usado em dicionários ou catálogos telefônicos, mas não é exatamente o mesmo.
6262
63-
Por exemplo, um caso importante. Uma letra maiúscula `"A"` não é igual à minúscula `"a"`. Qual delas é maior? A `"a"` minúscula. Por quê? Porque o caractere minúsculo tem um índice maior na tabela de codificação interna que o JavaScript usa (Unicode). Voltaremos a detalhes específicos e conseqüências disso no capítulo <info: string>.
63+
Por exemplo, um caso importante. Uma letra maiúscula `"A"` não é igual à minúscula `"a"`. Qual delas é maior? A `"a"` minúscula. Porquê? Porque o caractere minúsculo, tem um índice maior na tabela de codificação interna que o JavaScript usa (Unicode). Voltaremos a detalhes específicos e conseqüências disso no capítulo <info: string>.
6464
```
6565

6666
## Comparação de diferentes tipos
@@ -70,11 +70,11 @@ Ao comparar valores de diferentes tipos, o JavaScript converte os valores em nú
7070
Por exemplo:
7171

7272
```js run
73-
alert( '2' > 1 ); // true, string '2' becomes a number 2
74-
alert( '01' == 1 ); // true, string '01' becomes a number 1
73+
alert( '2' > 1 ); // true, a string '2' é convertida para o número 2
74+
alert( '01' == 1 ); // true, a string '01' é convertida para o número 1
7575
```
7676

77-
Para valores booleanos, `true` torna-se` 1` e `false` torna-se` 0`.
77+
Para valores booleanos, `true` torna-se `1` e `false` torna-se `0`.
7878

7979
Por exemplo:
8080

@@ -86,8 +86,8 @@ alert( false == 0 ); // true
8686
````smart header="A funny consequence"
8787
É possível que ao mesmo tempo:
8888
89-
- Dois valores são iguais.
90-
- Um deles é `true` como booleano e o outro é` false` como booleano.
89+
- Dois valores sejam iguais.
90+
- Um deles é `true` como booleano, e o outro é `false` como booleano.
9191
9292
Por exemplo:
9393
@@ -101,12 +101,12 @@ alert( Boolean(b) ); // true
101101
alert(a == b); // true!
102102
```
103103
104-
Do ponto de vista do JavaScript, esse resultado é normal. Uma verificação de igualdade converte valores usando a conversão numérica (portanto `"0"` torna-se `0`), enquanto a conversão explícita de` Boolean` usa outro conjunto de regras.
104+
Do ponto de vista do JavaScript, esse resultado é normal. Uma verificação de igualdade converte valores usando a conversão numérica (portanto `"0"` torna-se `0`), enquanto a conversão explícita de `Boolean` usa outro conjunto de regras.
105105
````
106106

107107
## Igualdade estrita
108108

109-
Uma verificação de igualdade regular `==` tem um problema. Não é possível diferenciar `0` de` false`:
109+
Uma verificação de igualdade regular `==` tem um problema. Não é possível diferenciar `0` de `false`:
110110

111111
```js run
112112
alert( 0 == false ); // true
@@ -118,46 +118,46 @@ A mesma coisa acontece com uma string vazia:
118118
alert( '' == false ); // true
119119
```
120120

121-
Isso acontece porque operandos de diferentes tipos são convertidos em números pelo operador de igualdade `==`. Uma string vazia, assim como `false`, se torna um zero.
121+
Isso acontece, porque operandos de diferentes tipos são convertidos em números pelo operador de igualdade `==`. Uma string vazia, assim como `false`, se torna num zero.
122122

123-
O que fazer se quisermos diferenciar `0` de` false`?
123+
O que fazer, se quisermos diferenciar `0` de `false`?
124124

125-
**Um operador de igualdade estrito `===` verifica a igualdade sem conversão de tipo.**
125+
**Um operador de igualdade estrita `===` verifica a igualdade sem conversão de tipo.**
126126

127-
Em outras palavras, se `a` e `b` forem de tipos diferentes, então `a === b` retornará imediatamente `false` sem uma tentativa de convertê-los.
127+
Em outras palavras, se `a` e `b` forem de tipos diferentes, então `a === b` retornará imediatamente `false`, sem uma tentativa de convertê-los.
128128

129129
Vamos tentar:
130130

131131
```js run
132-
alert( 0 === false ); // false, because the types are different
132+
alert( 0 === false ); // false, porque os tipos são diferentes
133133
```
134134

135-
Existe também um operador "diferença estrita" `!==` análogo a `!=`.
135+
Existe também um operador de "diferença estrita" `!==`, análogo a `!=`.
136136

137137
O operador de igualdade estrito é um pouco mais longo para escrever, mas torna óbvio o que está acontecendo e deixa menos espaço para erros.
138138

139139
## Comparação com "null" e "undefined"
140140

141141
Vamos ver mais casos extremos.
142142

143-
Existe um comportamento não intuitivo quando `null` ou` undefined` são comparados com outros valores.
143+
Existe um comportamento não intuitivo quando `null`, ou `undefined`, são comparados com outros valores.
144144

145145

146-
Para uma verificação de igualdade estrita `===` : Esses valores são diferentes, porque cada um deles é um tipo diferente.
146+
Para uma verificação de igualdade estrita `===` : Esses valores são diferentes, porque cada um deles é de um tipo diferente.
147147

148148
```js run
149149
alert( null === undefined ); // false
150150
```
151151

152-
Para uma verificação não estrita `==` : Existe uma regra especial. Esses dois são um "lindo casal": eles são iguais (no sentido de "=="), mas com nenhum outro valor.
152+
Para uma verificação não estrita `==` : Existe uma regra especial. Esses dois são um "lindo casal": eles são iguais (no sentido de "=="), mas a nenhum outro valor.
153153

154154
```js run
155155
alert( null == undefined ); // true
156156
```
157157

158-
Para matemática e outras comparações `<> <=> =` : `null/undefined` são convertidos em números: `null` torna-se `0`, enquanto `undefined` torna-se `NaN`.
158+
Para matemática e outras comparações `< > <= >=` : `null/undefined` são convertidos em números: `null` torna-se `0`, enquanto `undefined` torna-se `NaN` (*Not a Number*).
159159

160-
Agora vamos ver algumas coisas engraçadas que acontecem quando aplicamos essas regras. E, o que é mais importante, como não cair em uma armadilha com eles.
160+
Agora, vamos ver algumas coisas engraçadas que acontecem quando aplicamos essas regras. E, o que é mais importante, como não cair em uma armadilha com eles.
161161

162162
### Resultado estranho: "null" vs "0"
163163

@@ -171,11 +171,11 @@ alert( null >= 0 ); // (3) *!*true*/!*
171171

172172
Matematicamente, isso é estranho. O último resultado afirma que "`null` é maior que ou igual a zero", então em uma das comparações acima deve ser `true`, mas ambos casos são falsos.
173173

174-
A razão é que uma verificação de igualdade `==` e comparações `> < >= <=` funcionam de maneira diferente. Comparações convertem `null` para um número, tratando-o como `0`. É por isso que (3) `null >= 0` é verdadeiro e (1) `null > 0` é falso.
174+
A razão é que, uma verificação de igualdade `==` e comparações `> < >= <=`, funcionam de maneira diferente. Comparações convertem `null` para um número, tratando-o como `0`. É por isso que (3) `null >= 0` é verdadeiro, e (1) `null > 0` é falso.
175175

176-
Por outro lado, a verificação de igualdade `==` para `undefined` e `null` é definida de tal forma que, sem nenhuma conversão, elas são iguais entre si e não equivalem a qualquer outra coisa. É por isso que (2) `null == 0` é falso.
176+
Por outro lado, a verificação de igualdade `==` para `undefined` (e `null`) é definida de tal forma que, sem nenhuma conversão, elas são iguais entre si e não equivalem a qualquer outra coisa. É por isso que (2) `null == 0` é falso.
177177

178-
### Um incomparável "undefined"
178+
### Um incomparável "*undefined*"
179179

180180
O valor `undefined` não deve ser comparado a outros valores:
181181

@@ -189,21 +189,21 @@ Por que não gostam do zero? Sempre falso!
189189

190190
Obtemos estes resultados porque:
191191

192-
- Comparações `(1)` e `(2)` retornam `false` porque` undefined` é convertido para `NaN` e` NaN` é um valor numérico especial que retorna `false` para todas as comparações.
193-
- A verificação de igualdade `(3)` retorna `false` porque` undefined` somente é igual a `null` e nenhum outro valor.
192+
- Comparações `(1)` e `(2)`, retornam `false` porque `undefined` é convertido para `NaN`, e `NaN` é um valor numérico especial que retorna `false` para todas as comparações.
193+
- A verificação de igualdade `(3)`, retorna `false` porque `undefined` somente é igual a `null`, e a nenhum outro valor.
194194

195195
### Evitar problemas
196196

197197
Por que nós examinamos esses exemplos? Devemos nos lembrar dessas peculiaridades o tempo todo? Bem, na verdade não. Na verdade, essas coisas complicadas gradualmente se tornarão familiares ao longo do tempo, mas há uma maneira sólida de evitar problemas com elas:
198198

199-
Apenas trate qualquer comparação com `undefined / null` exceto a igualdade estrita ` === ` com cuidado excepcional.
199+
Apenas trate qualquer comparação com `undefined / null`, exceto na igualdade estrita `===`, com cuidado excepcional.
200200

201-
Não use comparações `> => <<=` com uma variável que pode ser `null / undefined`, a menos que você tenha certeza do que está fazendo. Se uma variável puder ter esses valores, verifique-os separadamente.
201+
Não use comparações `> >= < <=` com uma variável que possa ser `null / undefined`, a menos que você tenha a certeza do que está fazendo. Se uma variável puder ter esses valores, verifique-os separadamente.
202202

203203
## Resumo
204204

205205
- Operadores de comparação retornam um valor booleano.
206-
- As strings são comparadas letra por letra na ordem "dicionário".
207-
- Quando valores de diferentes tipos são comparados, eles são convertidos em números (com a exclusão de uma verificação de igualdade estrita).
208-
- Os valores `null` e` undefined` usando `==` são iguais entre eles e não são iguais a nenhum outro valor.
209-
- Tenha cuidado ao usar comparações como `>` ou `<` com variáveis que ocasionalmente podem ser 'null / undefined'. Verificar se há "null / undefined" separadamente é uma boa ideia.
206+
- As strings são comparadas letra por letra, na ordem de "dicionário".
207+
- Quando valores de diferentes tipos são comparados, eles são convertidos para números (com a exclusão de uma verificação de igualdade estrita).
208+
- Os valores `null` e `undefined` usando `==` são iguais entre eles, e não são iguais a nenhum outro valor.
209+
- Tenha cuidado ao usar comparações como `>` ou `<`, com variáveis que ocasionalmente possam ser 'null / undefined'. Verificar se há "null / undefined" separadamente é uma boa ideia.

0 commit comments

Comments
 (0)