Skip to content
21 changes: 12 additions & 9 deletions 1-js/02-first-steps/05-types/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -213,13 +213,6 @@ O tipo `symbol` é usado para criar identificadores únicos para objetos. Nós o

O operador `typeof` retorna o tipo do argumento. É útil quando queremos processar valores de diferentes tipos de forma diferente ou apenas queremos fazer uma verificação rápida.

Suporta duas formas de sintaxe:

1. Como operador: `typeof x`.
2. Como uma função: `typeof(x)`.

Em outras palavras, trabalha com parênteses ou sem eles. O resultado é o mesmo.

A chamada para `typeof x` retorna uma string com o nome do tipo:

```js
Expand Down Expand Up @@ -251,9 +244,19 @@ typeof alert // "function" (3)
As três últimas linhas podem precisar de explicações adicionais:

1. `Math` é um objeto embutido que fornece operações matemáticas. Nós o vamos aprender no capítulo <info:number>. Aqui, ele serve apenas como um exemplo de um objeto.
2. O resultado de `typeof null` é `"object"`. É um erro oficialmente reconhecido no comportamento de `typeof` e mantido para compatibilidade. Naturalmente, `null` não é um objeto. É um valor especial com um tipo separado próprio.
2. O resultado de `typeof null` é `"object"`. É um erro oficialmente reconhecido no comportamento de `typeof`, vindo dos primeiros dias do JavaScript e mantido para compatibilidade. Naturalmente, `null` não é um objeto. É um valor especial com um tipo separado próprio. O comportamento de `typeof` é errado aqui.
3. O resultado de `typeof alert` é `"function"`, porque `alert` é uma função. Vamos estudar as funções nos próximos capítulos onde veremos também que não há nenhum tipo especial "função" em JavaScript. As funções pertencem ao tipo objecto. Mas o `typeof` as trata de forma diferente, retornando `"function"`. Isto, também vem dos primeiros dias do JavaScript. Tecnicamente, é incorreto, mas muito conveniente na prática.

```smart header="A `sintaxe typeof(x)`"
Você pode também encontrar outra sintaxe: `typeof(x)`. è o mesmo que `typeof x`.

Para deixar claro: `typeof` é um operador, não uma função. Os parêntesis aqui não fazem parte de `typeof`. São o tipo de parêntesis usados em matemática para agrupamento.

Geralmente, tais parêntesis contêm uma expressão matemática, como em `(2 + 2)`, mas aqui eles contêm apenas um argumento `(x)`. Sintáticamente, eles permitem evitar o espaço entre o operador `typeof` e o seu argumento, e algumas pessoas gostam disso.

Algumas pessoas preferem `typeof(x)`, embora a sintaxe `typeof x` seja muito mais comum.
```

## Resumo

Existem 8 tipos básicos em JavaScript.
Expand All @@ -269,7 +272,7 @@ Existem 8 tipos básicos em JavaScript.

O operador `typeof` nos permite ver que tipo está armazenado em uma variável.

- Duas formas: `typeof x` ou `typeof(x)`.
- Geralmente, usado como `typeof x`, mas `typeof(x)` também é possivel.
- Retorna uma string com o nome do tipo, como `"string"`.
- Para `null` retorna `"object"` -- isso é um erro na linguagem, não é realmente um objeto.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ let ladder = {
}
};

ladder.up().up().down().up().down().showStep(); // 1
ladder.up().up().down().showStep().down().showStep(); // shows 1 then 0
```

We also can write a single call per line. For long chains it's more readable:
Expand All @@ -33,7 +33,7 @@ ladder
.up()
.up()
.down()
.up()
.showStep() // 1
.down()
.showStep(); // 1
.showStep(); // 0
```
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,14 @@ ladder.up();
ladder.up();
ladder.down();
ladder.showStep(); // 1
ladder.down();
ladder.showStep(); // 0
```

Modify the code of `up`, `down` and `showStep` to make the calls chainable, like this:

```js
ladder.up().up().down().showStep(); // 1
ladder.up().up().down().showStep().down().showStep(); // shows 1 then 0
```

Such approach is widely used across JavaScript libraries.
2 changes: 1 addition & 1 deletion 2-ui/3-event-details/6-pointer-events/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ Pointer events allow handling mouse, touch and pen events simultaneously, with a

Pointer events extend mouse events. We can replace `mouse` with `pointer` in event names and expect our code to continue working for mouse, with better support for other device types.

For drag'n'drops and complex touch interactions that the browser may decide to hijack and handle on its own - remember to cancel the default action on events and set `touch-events: none` in CSS for elements that we engage.
For drag'n'drops and complex touch interactions that the browser may decide to hijack and handle on its own - remember to cancel the default action on events and set `touch-action: none` in CSS for elements that we engage.

Additional abilities of pointer events are:

Expand Down