Skip to content

Commit 900528c

Browse files
authored
Merge pull request #39 from javascript-tutorial/sync-5cb9760a
Sync with upstream @ 5cb9760
2 parents f2023a4 + c6f147a commit 900528c

File tree

425 files changed

+9309
-5125
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

425 files changed

+9309
-5125
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
* text=auto eol=lf
2+
*.svg binary

1-js/01-getting-started/1-intro/article.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ Vamos ver o que há de tão especial no JavaScript, o que podemos fazer com ele,
66

77
*JavaScript* foi inicialmente criado para *" tornar páginas web vivas "*.
88

9+
<<<<<<< HEAD
910
Os programas nesta linguagem são chamados de *scripts*. Eles podem ser escritos diretamente no HTML de uma página web e executados automaticamente quando a página é carregada.
11+
=======
12+
The programs in this language are called *scripts*. They can be written right in a web page's HTML and run automatically as the page loads.
13+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca
1014
1115
Os scripts são fornecidos e executados como texto puro. Eles não precisam de preparação ou compilação especial para serem executados.
1216

@@ -70,7 +74,11 @@ Exemplos de tais restrições incluem:
7074
Existem maneiras de interagir com a câmera / microfone e outros dispositivos, mas eles exigem permissão explícita do usuário. Assim, uma página habilitada para JavaScript pode não habilmente habilitar uma câmera web, observar os arredores e enviar as informações para a [NSA](https://pt.wikipedia.org/wiki/Ag%C3%AAncia_de_Seguran%C3%A7a_Nacional).
7175
- Diferentes abas/janelas geralmente não se conhecem mutuamente. Às vezes sim, por exemplo, quando uma janela usa JavaScript para abrir a outra. Mas mesmo neste caso, JavaScript de uma página pode não acessar a outra se eles vierem de sites diferentes (de um domínio, protocolo ou porta diferente).
7276

77+
<<<<<<< HEAD
7378
Isso é chamado de "Política de mesma origem ". Para contornar isso, *ambas as páginas* devem conter um código JavaScript especial que lida com a troca de dados.
79+
=======
80+
This is called the "Same Origin Policy". To work around that, *both pages* must agree for data exchange and contain a special JavaScript code that handles it. We'll cover that in the tutorial.
81+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca
7482
7583
Essa limitação é, novamente, para a segurança do usuário. Uma página de `http://umsitequalquer.com.br` que um usuário abriu não deve poder alcançar uma outra aba do navegador com a URL `http://gmail.com` e roubar a informação de lá.
7684
- O JavaScript pode se comunicar facilmente pela rede com o servidor de onde a página atual veio. Mas sua capacidade de receber dados de outros sites / domínios é prejudicada. Embora possível, requer acordo explícito (expresso em cabeçalhos HTTP) do lado remoto. Mais uma vez, isso é uma limitação de segurança.
@@ -92,8 +100,12 @@ JavaScript é a única tecnologia de navegador que combina estas três qualidade
92100

93101
Isso é o que torna o JavaScript único. É por isso que é a ferramenta mais difundida para criar interfaces de navegador.
94102

103+
<<<<<<< HEAD
95104
Ao passo que planeja aprender uma nova tecnologia, é benéfico verificar suas perspectivas. Então, vamos seguir para as tendências modernas que o afetam, incluindo novas linguagens e habilidades de navegador.
96105

106+
=======
107+
That said, JavaScript also allows to create servers, mobile applications, etc.
108+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca
97109
98110
## Linguagens "sobre" JavaScript
99111

@@ -107,11 +119,20 @@ Ferramentas modernas tornam a transpilação muito rápida e transparente, permi
107119

108120
Exemplos de tais linguagens:
109121

122+
<<<<<<< HEAD
110123
- [CoffeeScript](http://coffeescript.org/) é um "açúcar sintático" para JavaScript. Ele introduz uma sintaxe mais curta, permitindo-nos escrever um código mais claro e preciso. Normalmente, Ruby devs gostam dele.
111124
- [TypeScript](http://www.typescriptlang.org/) está concentrado em adicionar "dados estritos de digitação" para simplificar o desenvolvimento e suporte de sistemas complexos. É desenvolvido pela Microsoft.
112125
- [Dart](https://www.dartlang.org/) é uma linguagem autônoma que tem seu próprio mecanismo que roda em ambientes sem navegador (como aplicativos móveis). Ela foi inicialmente oferecida pelo Google como um substituto para JavaScript, mas a partir de agora, os navegadores exigem que ela seja transpilada para JavaScript da mesma forma que as anteriores.
113126

114127
Há mais. Claro que, mesmo que usemos uma dessas linguagens, também devemos saber JavaScript para entender o que estamos fazendo.
128+
=======
129+
- [CoffeeScript](http://coffeescript.org/) is a "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it.
130+
- [TypeScript](http://www.typescriptlang.org/) is concentrated on adding "strict data typing" to simplify the development and support of complex systems. It is developed by Microsoft.
131+
- [Flow](http://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
132+
- [Dart](https://www.dartlang.org/) is a standalone language that has its own engine that runs in non-browser environments (like mobile apps), but also can be transpiled to JavaScript. Developed by Google.
133+
134+
There are more. Of course, even if we use one of transpiled languages, we should also know JavaScript to really understand what we're doing.
135+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca
115136
116137
## Resumo
117138

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
2+
# Manuals and specifications
3+
4+
This book is a *tutorial*. It aims to help you gradually learn the language. But once you're familiar with the basics, you'll need other sources.
5+
6+
## Specification
7+
8+
**The ECMA-262 specification** contains the most in-depth, detailed and formalized information about JavaScript. It defines the language.
9+
10+
But being that formalized, it's difficult to understand at first. So if you need the most trustworthy source of information about the language details, the specification is the right place. But it's not for everyday use.
11+
12+
The latest draft is at <https://tc39.es/ecma262/>.
13+
14+
To read about new bleeding-edge features, including those that are "almost standard" (so-called "stage 3"), see proposals at <https://github.com/tc39/proposals>.
15+
16+
Also, if you're in developing for the browser, then there are other specs covered in the [second part](info:browser-environment) of the tutorial.
17+
18+
## Manuals
19+
20+
- **MDN (Mozilla) JavaScript Reference** is a manual with examples and other information. It's great to get in-depth information about individual language functions, methods etc.
21+
22+
One can find it at <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
23+
24+
Although, it's often best to use an internet search instead. Just use "MDN [term]" in the query, e.g. <https://google.com/search?q=MDN+parseInt> to search for `parseInt` function.
25+
26+
27+
- **MSDN** – Microsoft manual with a lot of information, including JavaScript (often referred to as JScript). If one needs something specific to Internet Explorer, better go there: <http://msdn.microsoft.com/>.
28+
29+
Also, we can use an internet search with phrases such as "RegExp MSDN" or "RegExp MSDN jscript".
30+
31+
## Compatibility tables
32+
33+
JavaScript is a developing language, new features get added regularly.
34+
35+
To see their support among browser-based and other engines, see:
36+
37+
- <http://caniuse.com> - per-feature tables of support, e.g. to see which engines support modern cryptography functions: <http://caniuse.com/#feat=cryptography>.
38+
- <https://kangax.github.io/compat-table> - a table with language features and engines that support those or don't support.
39+
40+
All these resources are useful in real-life development, as they contain valuable information about language details, their support etc.
41+
42+
Please remember them (or this page) for the cases when you need in-depth information about a particular feature.

1-js/01-getting-started/2-code-editors/article.md renamed to 1-js/01-getting-started/3-code-editors/article.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Uma IDE carrega o projeto (que pode ter muitos arquivos), permite navegação en
1212

1313
Se você ainda não tiver selecionado uma IDE, considere as seguintes opções:
1414

15+
<<<<<<< HEAD:1-js/01-getting-started/2-code-editors/article.md
1516
- [WebStorm](http://www.jetbrains.com/webstorm/) para desenvolvimento de front-end. A mesma empresa oferece outros editores para outras linguagens (pago).
1617
- [Netbeans](http://netbeans.org/) (livre).
1718

@@ -20,6 +21,14 @@ Todas essas IDEs são multi-plataforma.
2021
Para Windows, há também "Visual Studio", que não deve ser confundido com "Visual Studio Code". "Visual Studio" é um editor pago e poderoso somente para Windows, bem adequado para a plataforma .NET . Uma versão gratuita é chamada [Visual Studio Community](https://www.visualstudio.com/vs/community/).
2122

2223
Muitas IDEs são pagas, mas têm um período experimental. Seu custo é geralmente desprezível comparado ao salário de um desenvolvedor qualificado, então basta escolher o melhor para você.
24+
=======
25+
- [Visual Studio Code](https://code.visualstudio.com/) (cross-platform, free).
26+
- [WebStorm](http://www.jetbrains.com/webstorm/) (cross-platform, paid).
27+
28+
For Windows, there's also "Visual Studio", not to be confused with "Visual Studio Code". "Visual Studio" is a paid and mighty Windows-only editor, well-suited for the .NET platform. It's also good at JavaScript. There's also a free version [Visual Studio Community](https://www.visualstudio.com/vs/community/).
29+
30+
Many IDEs are paid, but have a trial period. Their cost is usually negligible compared to a qualified developer's salary, so just choose the best one for you.
31+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca:1-js/01-getting-started/3-code-editors/article.md
2332
2433
## Editores leves
2534

@@ -33,6 +42,7 @@ Na prática, os editores leves podem ter muitos plug-ins, incluindo analisadores
3342

3443
As seguintes opções merecem sua atenção:
3544

45+
<<<<<<< HEAD:1-js/01-getting-started/2-code-editors/article.md
3646
- [Visual Studio Code](https://code.visualstudio.com/) (plataforma cruzada, livre) também tem muitos recursos similares a IDE.
3747
- [Atom](https://atom.io/) (multi-plataforma, livre).
3848
- [Sublime Text](http://www.sublimetext.com) (multi-plataforma, shareware).
@@ -49,6 +59,14 @@ Eu estou usando:
4959
- Como um editor de peso leve -- [Sublime Text](http://www.sublimetext.com) ou [Atom](https://atom.io/).
5060

5161
## Não vamos discutir
62+
=======
63+
- [Atom](https://atom.io/) (cross-platform, free).
64+
- [Sublime Text](http://www.sublimetext.com) (cross-platform, shareware).
65+
- [Notepad++](https://notepad-plus-plus.org/) (Windows, free).
66+
- [Vim](http://www.vim.org/) and [Emacs](https://www.gnu.org/software/emacs/) are also cool if you know how to use them.
67+
68+
## Let's not argue
69+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca:1-js/01-getting-started/3-code-editors/article.md
5270
5371
Os editores nas listas acima são aqueles que eu ou os meus amigos que eu considero bons desenvolvedores têm usado por um longo tempo e estão felizes com eles.
5472

-105 KB
Binary file not shown.
Binary file not shown.

1-js/01-getting-started/3-devtools/article.md renamed to 1-js/01-getting-started/4-devtools/article.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,19 @@ Abra Preferências e vá para o painel "Avançado". Há uma caixa de seleção n
4949

5050
Agora o `key:Cmd+Opt+C` pode alternar o console. Além disso, note que o novo item do menu superior chamado "Develop" apareceu. Ele tem muitos comandos e opções.
5151

52+
<<<<<<< HEAD:1-js/01-getting-started/3-devtools/article.md
5253
## Entrada multi-linha
5354

5455
Normalmente, quando colocamos uma linha de código no console, e então pressionamos `key:Enter`, ele executa.
5556

5657
Para inserir várias linhas, pressione `key:Shift+Enter`.
58+
=======
59+
```smart header="Multi-line input"
60+
Usually, when we put a line of code into the console, and then press `key:Enter`, it executes.
61+
62+
To insert multiple lines, press `key:Shift+Enter`. This way one can enter long fragments of JavaScript code.
63+
```
64+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca:1-js/01-getting-started/4-devtools/article.md
5765
5866
## Resumo
5967

107 KB
Loading
Loading

1-js/02-first-steps/01-hello-world/article.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Olá, mundo!
22

3+
<<<<<<< HEAD
34
O tutorial que você está lendo é sobre a core do JavaScript, que é independente de plataforma. Mais tarde, você vai aprender sobre Node.js e outras plataformas que o usam.
5+
=======
6+
This part of the tutorial is about core JavaScript, the language itself.
7+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca
48
59
Mas precisamos de um ambiente de trabalho para rodar nossos scripts e, como esse livro está online, o navegador é uma boa escolha. Vamos manter a quantidade de comandos específicos do navegador (como `alert`) no mínimo para que você não gaste tempo com eles se você planeja se concentrar em outro ambiente (como Node.js). Vamos focar em JavaScript no navegador na [próxima parte](/ui) do tutorial.
610

@@ -45,8 +49,13 @@ A tag `<script>` contém código JavaScript que é executado automaticamente qua
4549

4650
A tag `<script>` tem alguns atributos que raramente são usados hoje em dia, mas que ainda podem ser encontrados em códigos antigos:
4751

52+
<<<<<<< HEAD
4853
O atributo `type`: <code>&lt;script <u>type</u>=...&gt;</code>
4954
: O antigo padrão HTML, HTML4, requeria um script para ter um `type`. Normalmente era `type="text/javascript"`. Não é mais necessário. Além disso, o moderno padrão HTML, HTML5, mudou totalmente o significado deste atributo. Agora, ele pode ser usado para módulos JavaScript. Mas esse é um tópico avançado; vamos falar sobre módulos em outra parte do tutorial.
55+
=======
56+
The `type` attribute: <code>&lt;script <u>type</u>=...&gt;</code>
57+
: The old HTML standard, HTML4, required a script to have a `type`. Usually it was `type="text/javascript"`. It's not required anymore. Also, the modern HTML standard totally changed the meaning of this attribute. Now, it can be used for JavaScript modules. But that's an advanced topic; we'll talk about modules in another part of the tutorial.
58+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca
5059
5160
O atributo `language`: <code>&lt;script <u>language</u>=...&gt;</code>
5261
: Este atributo foi criado para mostrar o idioma do script. Este atributo não faz mais sentido porque JavaScript é a linguagem padrão. Não há necessidade de usá-lo.
@@ -73,9 +82,13 @@ Os arquivos de script são anexados ao HTML com o atributo `src`:
7382
<script src="/path/to/script.js"></script>
7483
```
7584

85+
<<<<<<< HEAD
7686
Aqui, `/path/to/script.js` é um caminho absoluto para o arquivo script (da raiz do site).
7787

7888
Você também pode fornecer um caminho relativo a partir da página atual. Por exemplo, `src="script.js"` significaria um arquivo `"script.js"` na pasta atual.
89+
=======
90+
Here, `/path/to/script.js` is an absolute path to the script from the site root. One can also provide a relative path from the current page. For instance, `src="script.js"` would mean a file `"script.js"` in the current folder.
91+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca
7992
8093
Nós também podemos dar uma URL completa. Por exemplo:
8194

1-js/02-first-steps/03-strict-mode/article.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ Por um longo tempo, o JavaScript evoluiu sem problemas de compatibilidade. Novos
44

55
Isso teve o benefício de nunca quebrar o código existente. Mas a desvantagem foi que qualquer erro ou decisão imperfeita feita pelos criadores do JavaScript acabou ficando presa na linguagem para sempre.
66

7+
<<<<<<< HEAD
78
Este foi o caso até 2009, quando ECMAScript 5 (ES5) apareceu. Adicionou novos recursos à linguagem e modificou alguns dos existentes. Para manter o código antigo funcionando, a maioria das modificações está desativada por padrão. Você precisa habilitá-los explicitamente com uma diretiva especial: `" use strict "`.
9+
=======
10+
This was the case until 2009 when ECMAScript 5 (ES5) appeared. It added new features to the language and modified some of the existing ones. To keep the old code working, most such modifications are off by default. You need to explicitly enable them with a special directive: `"use strict"`.
11+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca
812
913
## "use strict"
1014

@@ -19,8 +23,12 @@ For example:
1923
...
2024
```
2125

26+
<<<<<<< HEAD
2227
Nós vamos aprender sobre funções, uma forma de agupar comandos, em breve.
2328

29+
=======
30+
We will learn functions (a way to group commands) soon. Looking ahead, let's note that `"use strict"` can be put at the beginning of the function body instead of the whole script. Doing that enables strict mode in that function only. But usually, people use it for the whole script.
31+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca
2432
2533
Vamos apenas observar que "use strict" pode ser colocado no início da maioria dos tipos de funções em vez do script inteiro. Fazer isso habilita o modo estrito apenas nessa função. Mas geralmente, as pessoas usam no script inteiro.
2634

@@ -43,9 +51,23 @@ Para o futuro, quando você usar o console do navegador para testar funcionalida
4351

4452
As vezes, quando usar `use strict` faz alguma diferença, você terá resultados incorretos.
4553

54+
<<<<<<< HEAD
4655
Mesmo se pressionarmos `key: Shift + Enter` para inserir várias linhas e colocar` use strict` no topo, isso não funcionará. Isso é por causa de como o console executa o código internamente.
4756

4857
A maneira confiável de garantir `use strict` seria inserir o código no console da seguinte forma:
58+
=======
59+
You can try to press `key:Shift+Enter` to input multiple lines, and put `use strict` on top, like this:
60+
61+
```js
62+
'use strict'; <Shift+Enter for a newline>
63+
// ...your code
64+
<Enter to run>
65+
```
66+
67+
It works in most browsers, namely Firefox and Chrome.
68+
69+
If it doesn't, the most reliable way to ensure `use strict` would be to input the code into console like this:
70+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca
4971
5072
```js
5173
(function() {

1-js/02-first-steps/04-variables/2-declare-variables/solution.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1+
<<<<<<< HEAD
12
Primeiro, a variável para o nome do nosso planeta.
3+
=======
4+
## The variable for our planet
5+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca
26
37
Isso é simples:
48

@@ -8,7 +12,11 @@ let ourPlanetName = "Earth";
812

913
Note que poderíamos usar um nome mais curto, `planet`, mas pode não ser óbvio a que planeta se refere. É bom ser mais detalhado. Pelo menos até a variável isNotTooLong.
1014

15+
<<<<<<< HEAD
1116
Em segundo lugar, o nome do visitante atual:
17+
=======
18+
## The name of the current visitor
19+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca
1220
1321
```js
1422
let currentUserName = "John";

1-js/02-first-steps/04-variables/3-uppercast-constant/solution.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ Nós geralmente usamos letras maiúsculas para constantes que são "hard-coded".
22

33
Neste código, o `birthday` é exatamente assim. Então nós poderíamos usar a maiúscula para ele.
44

5-
Em contraste, `age` é avaliada em tempo de execução. Hoje temos uma idade, um ano depois teremos outra. É constante no sentido de não mudar através da execução do código. Mas é um pouco "menos constante" do que `birthday`, é calculada, por isso devemos manter as minúsculas para ela.
5+
<<<<<<< HEAD
6+
Em contraste, `age` é avaliada em tempo de execução. Hoje temos uma idade, um ano depois teremos outra. É constante no sentido de não mudar através da execução do código. Mas é um pouco "menos constante" do que `birthday`, é calculada, por isso devemos manter as minúsculas para ela.
7+
=======
8+
In contrast, `age` is evaluated in run-time. Today we have one age, a year after we'll have another one. It is constant in a sense that it does not change through the code execution. But it is a bit "less of a constant" than `birthday`: it is calculated, so we should keep the lower case for it.
9+
>>>>>>> 5cb9760abb8499bf1e99042d866c3c1db8cd61ca

0 commit comments

Comments
 (0)