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
@@ -88,21 +88,21 @@ A principal diferença entre eles é:
88
88
89
89
Em outras palavras, `||` não diferencia entre `false`, `0`, uma string vazia `""` e `null/undefined`. Todos são igualmente valores avaliados como falsos. Se algum desses for o primeiro argumento de `||`, então teremos o segundo argumento como resultado.
90
90
91
-
Na prática, porém, gostaríamos de usar valores padrão somente se a variável é `null/undefined`. Ou seja, quando o valor realmente seja desconhecido/não definido.
91
+
Na prática, porém, gostaríamos de usar valores padrão somente se a variável é `null/undefined`. Ou seja, quando o valor seja realmente desconhecido/não definido.
92
92
93
93
Por exemplo, considere isso:
94
94
95
95
```js run
96
-
letaltura=0;
96
+
letheight=0;
97
97
98
-
alert(altura||100); // 100
99
-
alert(altura??100); // 0
98
+
alert(height||100); // 100
99
+
alert(height??100); // 0
100
100
```
101
101
102
-
- `altura||100` verifica se `altura` é um valor avaliado como falso, e como é `0`, de fato é.
102
+
- `height||100` verifica se `height` é um valor avaliado como falso, e como é `0`, de fato é.
103
103
- então o resultado de `||` é o segundo argumento, `100`.
104
-
- `altura??100` verifica se `altura` é `null/undefined`, e não é,
105
-
- então o resultado é o valor atual de `altura`, que é `0`.
104
+
- `height??100` verifica se `height` é `null/undefined`, e não é,
105
+
- então o resultado é o valor atual de `height`, que é `0`.
106
106
107
107
Na prática, a altura igual a zero é um valor válido que não deve ser substituído pelo valor padrão, então usar `??` é o correto.
108
108
@@ -115,11 +115,11 @@ Isto significa que, tal como `||`, o operador de coalescência nula `??` é aval
115
115
Então, se quiser selecionar um valor com `??` em uma expressão com outros operadores, considere o uso de parênteses:
116
116
117
117
```js run
118
-
letaltura=null;
119
-
letlargura=null;
118
+
letheight=null;
119
+
letwidth=null;
120
120
121
121
// importante: use parênteses
122
-
let area = (altura??100) * (largura??50);
122
+
let area = (height??100) * (width??50);
123
123
124
124
alert(area); // 5000
125
125
```
@@ -128,15 +128,15 @@ Caso contrário, se omitirmos os parênteses, como `*` tem maior precedência qu
128
128
129
129
```js
130
130
// sem parênteses
131
-
let area =altura??100*largura??50;
131
+
let area =height??100*width??50;
132
132
133
133
// ...funciona desta forma (provavelmente não como gostaríamos):
134
-
let area =altura??100*largura??50;
134
+
let area =height??100*width??50;
135
135
```
136
136
137
137
### Usando ?? com && ou ||
138
138
139
-
Por razões de segurança, o JavaScript proíbe o uso de `??`juntamente com os operadores `&&` e `||`, a menos que a precedência seja explicitamente especificada usando parênteses.
139
+
Por razões de segurança, o JavaScript proíbe o uso de `??`junto dos operadores `&&` e `||`, a menos que a precedência seja explicitamente especificada usando parênteses.
140
140
141
141
O código abaixo dispara um erro de sintaxe:
142
142
@@ -163,8 +163,8 @@ alert(x); // 2
163
163
É usado para atribuir valores a variáveis:
164
164
165
165
```js
166
-
// grava altura=100, se altura é null ou undefined
167
-
altura=altura??100;
166
+
// grava height=100, se height é null ou undefined
167
+
height=height??100;
168
168
```
169
169
170
170
- O operador `??` possui uma precedência muito baixa, um pouco maior que `?` e `=`, portanto considere adicionar parênteses quando utilizá-lo em uma expressão.
0 commit comments