Skip to content

Commit 9534668

Browse files
authored
Merge branch 'master' into js/12-async-iterators-generators
2 parents 36b6a49 + 74d6397 commit 9534668

File tree

656 files changed

+11009
-5924
lines changed

Some content is hidden

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

656 files changed

+11009
-5924
lines changed

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ Vediamo cosa rende JavaScript così speciale, cosa è possibile ottenere tramite
44

55
## Cos'è JavaScript?
66

7-
*JavaScript* è stato creato con lo scopo di *"dare vita alle pagine web"*.
7+
*JavaScript* è stato creato con lo scopo di "dare vita alle pagine web".
88

99
I programmi che sfruttano questo linguaggio vengono chiamati *script*. Possono essere scritti direttamente nel documento HTML ed eseguiti in automatico al caricamento della pagina.
1010

1111
Gli script vengono scritti ed eseguiti come testo semplice. Infatti non richiedono particolari conoscenze, ne di essere compilati per poterli eseguire.
1212

1313
In questo aspetto, JavaScript è molto differente da un altro linguaggio chiamato [Java](https://en.wikipedia.org/wiki/Java_(programming_language)).
1414

15-
```smart header="Perchè <u>Java</u>Script?"
16-
In origine JavaScript aveva un altro nome: "Live Script". In quel periodo Java era molto popolare, per questo si è pensato che identificare questo linguaggio come il "fratello minore" di Java potesse aiutare nella sua diffusione.
15+
```smart header="Perchè si chiama <u>Java</u>Script?"
16+
In origine JavaScript aveva un altro nome: "LiveScript". In quel periodo Java era molto popolare, per questo si è pensato che identificare questo linguaggio come il "fratello minore" di Java potesse aiutare nella sua diffusione.
1717
1818
Evolvendosi, JavaScript è diventato un linguaggio completamente indipendente, con delle specifiche personali chiamate [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript), e adesso non ha quasi nulla in comune con Java.
1919
```
@@ -26,7 +26,7 @@ Esistono altri motori JavaScript, tra cui:
2626

2727
- [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- per Chrome e Opera.
2828
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- per Firefox.
29-
- ...Ci sono altri codenames come "Trident" e "Chakra" compatibili cond diverse versioni di IE, "ChakraCore" specifico per Microsoft Edge, "Nitro" e "SquirrelFish" per Safari, etc.
29+
- ...Ci sono altri codenames come "Chakra" per IE, "ChakraCore" specifico per Microsoft Edge, "Nitro" e "SquirrelFish" per Safari, etc.
3030

3131
I nomi citati sopra possono essere utili da ricordare, poichè si possono trovare spesso in articoli che trattano di sviluppo web. Anche noi li useremo. Ad esempio, se "una caratteristica X è supportata da V8", probabilmente funzioneranno senza problemi in Chrome e Opera.
3232

@@ -64,7 +64,7 @@ Le possibilità di JavaScript nel browser sono limitate per la sicurezza dell'ut
6464

6565
Degli esempi di queste restrizioni possono essere:
6666

67-
- JavaScript in una pagina web non può leggere o scrivere in qualsiasi file nell'hard disk, ne copiare o eseguire programmi. Non ha accesso diretto alle funzioni di sistema.
67+
- JavaScript in una pagina web non può leggere o scrivere in qualsiasi file nell'hard disk, ne copiare o eseguire programmi. Non ha accesso diretto alle funzioni di sistema operativo.
6868

6969
I moderni browser gli consentono di lavorare con i file, sempre con un accesso limitato e comunque solo se il comando proviene da utente, come il "dropping" di un file nella finestra del browser, o con la selezione tramite il tag `<input>`.
7070

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
2+
# Manuali e Specifiche
3+
4+
Questo libro è un *tutorial*. L'obiettivo è quello di aiutarti ad apprender il linguaggio gradualmente. Una volta che avrai familiarizzato con le basi avrai bisogno di ulteriori risorse.
5+
6+
## Specifiche
7+
8+
[La specifica ECMA-262](https://www.ecma-international.org/publications/standards/Ecma-262.htm) contiene informazioni più dettagliate, approfondite e formalizzate riguardo JavaScript. E' la definizione stessa del linguaggio.
9+
10+
Iniziare a studiare dalla formalizzazione può risultare difficile all'inizio. Quindi se avete bisogno di una sorgente affidabile e formale riguardo i dettagli del linguaggio, la specifica è il posto in cui cercare. Ma non è una risorsa comoda da consultare per i problemi di tutti i giorni.
11+
12+
Ogni anno viene rilasciata una nuova specifica. Fra questi rilasci, è possibile trovare l'ultima bozza a <https://tc39.es/ecma262/>.
13+
14+
Per leggere delle più recenti caratteristiche, incluse quelle considerate "quasi standard" (definite "stage 3"), potete consultare <https://github.com/tc39/proposals>.
15+
16+
Inoltre, se state sviluppando in ambiente browser, ci sono ulteriori specifiche che verranno analizzate nella [seconda parte](info:browser-environment) del tutorial.
17+
18+
## Manuali
19+
20+
- **MDN (Mozilla) JavaScript Reference** è un manuale con esempi ed altre informazioni utili. E' ottimo per avere informazioni dettagliate riguardo le funzioni e i metodi del linguaggio.
21+
22+
Può essere consultato al link <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
23+
24+
Anche se, è meglio eseguire una ricerca internet. E' sufficiente inserire il termine "MDN" nella stringa da ricercare, e.g. <https://google.com/search?q=MDN+parseInt> per ricercare la funzione `parseInt`.
25+
26+
27+
- **MSDN** – Manuale Microsoft con molte informazioni, incluso JavaScript (a cui viene fatto riferimento con il termine JScript). Se si ha bisongo di ottenere qualche informazione specifica per Internet Explorer, meglio consultare la guida: <http://msdn.microsoft.com/>.
28+
29+
Possiamo anche effettuare una ricerca online con frasi come "RegExp MSDN" o "RegExp MSDN jscript".
30+
31+
## Tabelle di compatibilità
32+
33+
JavaScript è un linguaggio in via di sviluppo, per questo nuove funzionalità vengono aggiunte regolarmente.
34+
35+
Per verificare il loro supporto da parte dei browser, si possono consultare:
36+
37+
- <http://caniuse.com> - per visualizzare tabelle di supporto per ogni caratteristica, ad esempio per visualizzare le funzioni di crittografia: <http://caniuse.com/#feat=cryptography>.
38+
- <https://kangax.github.io/compat-table> - una tabella con le caratteristiche del linguaggio e i motori che le supportano.
39+
40+
Tutte le risorse elencate finora sono utili nella sviluppo di tutti i giorni, in quanto contengono ottime informazioni riguardo i dettagli del linguaggio, il loro support etc.
41+
42+
Ti consiglio quindi di ricordartele (in alternativa puoi consultare questa pagina), nel caso dovessi avere bisogno di informazioni dettagliate riguardo qualche caratteristica particolare.

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ Nella pratica, gli editor semplici possono avere molti plugin tra cui sintassi a
3434
Meritano attenzione le seguenti opzioni:
3535

3636
- [Atom](https://atom.io/) (multi-piattaforma, gratuito).
37+
- [Visual Studio Code](https://code.visualstudio.com/) (multi-piattaforma, gratuito).
3738
- [Sublime Text](http://www.sublimetext.com) (multi-piattaforma, con prova gratuita).
3839
- [Notepad++](https://notepad-plus-plus.org/) (Windows, gratuito).
3940
- [Vim](http://www.vim.org/) e [Emacs](https://www.gnu.org/software/emacs/) sono particolarmente carini se si sanno utilizzare.

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Per poter visualizzare gli errori e ricevere altre informazioni utili riguardo g
99
Molto spesso gli sviluppatori tendono ad utilizzare Chrome o Firefox poichè questi browser forniscono i migliori strumenti per lo sviluppo. Anche gli altri browser contengono gli strumenti per lo sviluppo, talvolta con caratteristiche speciali, ma più che altro giocano ad "avvicinarsi" a Chrome e Firefox.
1010
Quindi molte perone hanno un browser "preferito" e utilizzano gli altri solo quando un problema è specifico di quel browser.
1111

12-
Gli strumenti da sviluppatore sono potenti; hanno molte caratteristiche. Prima di tutto, dobbiamo capire come ottenerli, come cercare errori e come eseguire comandi JavaScript.
12+
Gli strumenti da sviluppatore sono molto potenti; possiedono molte caratteristiche. Prima di tutto, dobbiamo capire come accedervi, come cercare errori e come eseguire comandi JavaScript.
1313

1414
## Google Chrome
1515

@@ -34,6 +34,11 @@ Sotto il messaggio d'errore, c'e un simbolo blu `>`. Questo indica la "riga di c
3434

3535
Adesso possiamo visualizzare gli errori, ed è già abbastanza come inizio. Ritorneremo sugli strumenti di sviluppo più avanti e analizzeremo il debugging più in profondità nel capitolo <info:debugging-chrome>.
3636

37+
```smart header="Multi-line input"
38+
Usually, when we put a line of code into the console, and then press `key:Enter`, it executes.
39+
40+
To insert multiple lines, press `key:Shift+Enter`. This way one can enter long fragments of JavaScript code.
41+
```
3742

3843
## Firefox, Edge, and others
3944

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!DOCTYPE html>
2+
<html>
3+
4+
<body>
5+
6+
<script>
7+
alert( "I'm JavaScript!" );
8+
</script>
9+
10+
</body>
11+
12+
</html>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
[html src="index.html"]

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ E' anche possibile fornire un percorso relativo a partire dalla pagina corrente.
7272
Possiamo anche fornire un URL. Per esempio:
7373

7474
```html
75-
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js"></script>
75+
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
7676
```
7777

7878
Per integrare più script, utilzzate più volte il tag:

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ Nel caso in cui non funzioni, la miglior strada da seguire è quella di assicura
7272
})()
7373

7474

75-
7675
## Utilizzare sempre "use strict"
7776

7877
Le differenze tra `"use strict"` contro la modalità di "default" non è ancora stata spiegata.

1-js/02-first-steps/05-types/article.md

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Tipi di dato
22

3+
Un valore in JavaScript ha sempre un tipo specifico. Ad esempio, string o number.
4+
5+
Ci sono otto tipi di base in JavaScript. In questo articolo, vedremo i loro aspetti generali, nei prossimi capitoli parleremo di ognuno di essi in dettaglio.
6+
37
Una variabile in JavaScript può contenere qualsiasi dato. Una variabile può essere di tipo stringa in un istante e successivamente ricevere un valore numerico:
48

59
```js
@@ -10,9 +14,7 @@ message = 123456;
1014

1115
I linguaggi di programmazione che lo consentono sono detti "dinamicamente tipati", questo significa che ci sono tipi di dato, ma le variabili non sono legate ad un tipo.
1216

13-
Ci sono sette tipi di dato in JavaScript. Qui ne studiamo le basi, nel prossimo capitolo lo entreremo nei dettagli.
14-
15-
## Tipo Numerico
17+
## Number
1618

1719
```js
1820
let n = 123;
@@ -62,14 +64,38 @@ I numeri con valore speciale appartengono formalmente al tipo "numerico". Ovviam
6264

6365
Vedremo di più su come lavorare con i numeri nel capitolo <info:number>.
6466

65-
## Tipo Stringa
67+
## BigInt
68+
69+
In JavaScript, il tipo "number" non può rappresentare valori interni più grandi di <code>(2<sup>53</sup>-1)</code> (che equivale a `9007199254740991`), o minori di <code>-(2<sup>53</sup>-1)</code>. Questa è una limitazione tecnica dovuta alla loro rappresentazione interna.
70+
71+
Per la maggior parte degli scopi, questo intervallo è sufficiente, ma in alcuni casi potremmo aver bisogno di numeri molto grandi, ad esempio per la crittografia o timestamp con precisione al microsecondo.
72+
73+
Il tipo `BigInt` è stato aggiunto di recente al linguaggio, e consente di rappresentare numeri interi di lunghezza arbitraria.
74+
75+
Un valore di tipo `BigInt` viene creato aggiungendo `n` alla fine del numero:
76+
77+
```js
78+
// la "n" alla fine del numero indica che è un BigInt
79+
const bigInt = 1234567890123456789012345678901234567890n;
80+
```
81+
82+
Poichè i `BigInt` sono utilizzati raramente, non li analizzeremo in questo articolo, ma li vedremo più in dettaglio nel capitolo dedicato <info:bigint>.
83+
84+
85+
```smart header="Problemi di compatibilità"
86+
Attualmente, `BigInt` sono supportati da Firefox/Chrome/Edge/Safari, ma non da IE.
87+
```
88+
89+
Potete sempre verificare [la tabella di compatibilità di *MDN* BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#Browser_compatibility) per sapere quali versioni dei browser li supportano.
90+
91+
## String
6692

6793
Una stringa in JavaScript deve essere tra apici.
6894

6995
```js
7096
let str = "Hello";
7197
let str2 = 'Single quotes are ok too';
72-
let phrase = `can embed ${str}`;
98+
let phrase = `can embed another ${str}`;
7399
```
74100

75101
In JavaScript, ci sono 3 tipi di apici.
@@ -155,19 +181,20 @@ Il significato di `undefined` è che "il valore non è assegnato".
155181
Se una variabile viene dichiarata, ma non assegnata, il suo valore è esattamente `undefined`:
156182

157183
```js run
158-
let x;
184+
let age;
159185
160-
alert(x); // mostra "undefined"
186+
alert(age); // mostra "undefined"
161187
```
162188

163189
Tecnicamente, è possibile assegnare `undefined` a qualsiasi variabile:
164190

165191
```js run
166-
let x = 123;
192+
let age = 100;
167193
168-
x = undefined;
194+
// change the value to undefined
195+
age = undefined;
169196
170-
alert(x); // "undefined"
197+
alert(age); // "undefined"
171198
```
172199

173200
...Ma non è comunque consigliabile farlo. Normalmente, si utilizza `null` per descrivere un valore "vuoto" o "sconosciuto" della variabile, e `undefined` viene utilizzato solo per i controlli, per verificare se la variabile è stata assegnata.
@@ -198,6 +225,8 @@ typeof undefined // "undefined"
198225
199226
typeof 0 // "number"
200227
228+
typeof 10n // "bigint"
229+
201230
typeof true // "boolean"
202231
203232
typeof "foo" // "string"
@@ -228,6 +257,7 @@ Le ultime tre linee potrebbero richiedere una spiegazione ulteriore:
228257
Ci sono 7 tipi base in JavaScript.
229258
230259
- `number` per numeri di qualsiasi tipo: interi o in virgola mobile.
260+
- `bigint` viene utilizzato per definire interi di lunghezza arbitraria.
231261
- `string` per stringhe. Una stringa può contenere uno o più caratteri, non esiste nessun tipo `character`.
232262
- `boolean` per `true`/`false`.
233263
- `null` per valori sconosciuti -- un valore a parte che contiene solo il valore `null`.

1-js/02-first-steps/09-alert-prompt-confirm/1-simple-page/solution.md renamed to 1-js/02-first-steps/06-alert-prompt-confirm/1-simple-page/solution.md

File renamed without changes.

0 commit comments

Comments
 (0)