You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Maior/menor ou igual que: <code>a >= b</code>, <code>a <= 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>≠</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>≠</code>, mas em JavaScript é escrito como uma atribuição com um sinal de exclamação antes: <code>a != b</code>.
9
9
10
10
## Booleano é o resultado
11
11
12
12
Como todos os outros operadores, uma comparação retorna um valor. Nesse caso, o valor é um booleano.
13
13
14
-
-`true` -- significa "sim", "correto" ou "verdade".
14
+
-`true` -- significa "sim", "correto" ou "verdadeiro".
15
15
-`false` -- significa "não", "errado" ou "falso".
16
16
17
17
Por exemplo:
18
18
19
19
```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)
23
23
```
24
24
25
25
Um resultado de comparação pode ser atribuído a uma variável, assim como qualquer valor:
26
26
27
27
```js run
28
-
let result =5>4; //assign the result of the comparison
28
+
let result =5>4; //atribui o resultado da comparação
29
29
alert( result ); // true
30
30
```
31
31
32
32
## Comparação de strings
33
33
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".
35
35
36
36
Em outras palavras, as strings são comparadas letra a letra.
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.
50
50
3. Caso contrário, se os primeiros caracteres das duas sequências forem os mesmos, compare os segundos caracteres da mesma maneira.
51
51
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.
53
53
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:
55
55
56
56
1.`G` é o mesmo que `G`.
57
57
2.`l` é o mesmo que `l`.
@@ -60,7 +60,7 @@ Nos exemplos acima, a comparação `'Z' > 'A'` chega a um resultado no primeiro
60
60
```smart header="Not a real dictionary, but Unicode order"
61
61
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.
62
62
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>.
64
64
```
65
65
66
66
## Comparação de diferentes tipos
@@ -70,11 +70,11 @@ Ao comparar valores de diferentes tipos, o JavaScript converte os valores em nú
70
70
Por exemplo:
71
71
72
72
```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
75
75
```
76
76
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`.
78
78
79
79
Por exemplo:
80
80
@@ -86,8 +86,8 @@ alert( false == 0 ); // true
86
86
````smart header="A funny consequence"
87
87
É possível que ao mesmo tempo:
88
88
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.
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.
105
105
````
106
106
107
107
## Igualdade estrita
108
108
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`:
110
110
111
111
```js run
112
112
alert( 0==false ); // true
@@ -118,46 +118,46 @@ A mesma coisa acontece com uma string vazia:
118
118
alert( ''==false ); // true
119
119
```
120
120
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.
122
122
123
-
O que fazer se quisermos diferenciar `0` de`false`?
123
+
O que fazer, se quisermos diferenciar `0` de`false`?
124
124
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.**
126
126
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.
128
128
129
129
Vamos tentar:
130
130
131
131
```js run
132
-
alert( 0===false ); // false, because the types are different
132
+
alert( 0===false ); // false, porque os tipos são diferentes
133
133
```
134
134
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 `!=`.
136
136
137
137
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.
138
138
139
139
## Comparação com "null" e "undefined"
140
140
141
141
Vamos ver mais casos extremos.
142
142
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.
144
144
145
145
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.
147
147
148
148
```js run
149
149
alert( null === undefined ); // false
150
150
```
151
151
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.
153
153
154
154
```js run
155
155
alert( null == undefined ); // true
156
156
```
157
157
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*).
159
159
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.
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.
173
173
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.
175
175
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.
177
177
178
-
### Um incomparável "undefined"
178
+
### Um incomparável "*undefined*"
179
179
180
180
O valor `undefined` não deve ser comparado a outros valores:
181
181
@@ -189,21 +189,21 @@ Por que não gostam do zero? Sempre falso!
189
189
190
190
Obtemos estes resultados porque:
191
191
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.
194
194
195
195
### Evitar problemas
196
196
197
197
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:
198
198
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.
200
200
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.
202
202
203
203
## Resumo
204
204
205
205
- 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