Skip to content

Commit 19206e1

Browse files
authored
Merge pull request #326 from pasor1/sync
Sincronizzazione con versione inglese
2 parents a11282c + b1dbcc4 commit 19206e1

File tree

29 files changed

+222
-140
lines changed

29 files changed

+222
-140
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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 "Chakra" per IE, "ChakraCore" specifico per Microsoft Edge, "Nitro" e "SquirrelFish" per Safari, etc.
29+
- ...Ci sono altri codenames come "Chakra" per IE, "JavaScriptCore", "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

1-js/02-first-steps/02-structure/article.md

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ alert(3 +
4545
+ 2);
4646
```
4747

48-
Il codice stampa `6` perché, in questo caso, JavaScript non inserisce un punto e virgola. E' abbastanza ovvio che se la riga finisce con un `"+"`, allora è un "espressione incompleta", quindi il punto e virgola non verrà inserito. Per questo, nell'esempio sopra, tutto funziona come dovrebbe.
48+
Il codice stampa `6` perché, in questo caso, JavaScript non inserisce un punto e virgola. E' abbastanza ovvio che se la riga finisce con un `"+"`, allora è un "espressione incompleta", quindi il punto e virgola sarebbe errato. Per questo, nell'esempio sopra, tutto funziona come dovrebbe.
4949

5050
**Ma ci sono casi in cui JavaScript "fallisce" nell'interpretare un punto e virgola, dove invece sarebbe necessario.**
5151

@@ -55,39 +55,38 @@ Gli errori di questo tipo sono molto difficili da trovare e sistemare.
5555
Se sei curioso di vedere un esempio concreto di questo tipo di errore, dai un occhiata al seguente codice:
5656
5757
```js run
58-
[1, 2].forEach(alert)
58+
alert("Hello");
59+
60+
[1, 2].forEach(alert);
5961
```
6062
6163
Non c'e bisogno di pensare al significato delle parentesi `[]` e al `forEach`. Li studieremo più avanti, per ora è sufficiente sapere il risultato: mostrerà `1` e poi `2`.
6264
63-
Adesso andiamo ad aggiungere un `alert` prima del codice e *non* concludiamo la riga con il punto e virgola:
65+
Adesso andiamo a rimuovere il punto e virgola dopo `alert`:
6466
6567
```js run no-beautify
66-
alert("There will be an error")
68+
alert("Hello")
6769
68-
[1, 2].forEach(alert)
70+
[1, 2].forEach(alert);
6971
```
7072
71-
Adesso se lo eseguiamo, solo il primo `alert` viene mostrato, poi avremmo un errore!
72-
73-
Ma tutto si risolve aggiungendo un punto e virgola dopo `alert`:
74-
```js run
75-
alert("All fine now");
73+
La differenza rispetto al codice precedente è solo un carattere, il punto e virgola al termine della prima line è sparito.
7674
77-
[1, 2].forEach(alert)
78-
```
75+
Se eseguiamo il codice, verrà mostrato solo il primo `Hello` (ci sarà un errore, ma per visualizzarlo bisogna aprire la console). Non verranno più mostrati i numeri.
7976
80-
Adesso avremmo il messaggio "All fine now", successivamente `1` seguito da `2`.
77+
Questo perché JavaScript non inserisce il punto e virgola prima della parentesi quadre `[...]`. Quindi il codice viene interpretato come un singolo comando.
8178
82-
L'errore nel non aver messo il punto e virgola è avvenuto perché JavaScript non inserisce automaticamente un punto e virgola prima delle parentesi quadre `[...]`.
83-
84-
Quindi, poiché il punto e virgola non viene auto-inserito, il codice del precedente esempio viene trattato come un istruzione singola. Infatti il motore JavaScript lo vede cosi:
79+
Ecco come il motore interpreta il codice:
8580
8681
```js run no-beautify
87-
alert("There will be an error")[1, 2].forEach(alert)
82+
alert("Hello")[1, 2].forEach(alert);
8883
```
8984
90-
Anche se se in realtà sono due istruzioni separate, non una singola. Questo tipo di interpretazione, in questo caso è errata. Ci possono essere altre situazioni in cui si verifica questo tipo di errore.
85+
Looks weird, right? Such merging in this case is just wrong. We need to put a semicolon after `alert` for the code to work correctly.
86+
87+
Sembra strano, vero? Questo comportamento in questo caso è errato. E' necessario mettere un punto e virgola dopo `alert` affinché il codice funzioni correttamente.
88+
89+
Questo accade anche in altre situazioni.
9190
````
9291

9392
E' consigliato quindi, di inserire il punto e virgola fra ogni istruzione, anche se vengono scritte in righe diverse. Questa è una regola largamente adottata dalla community. Ripetiamolo nuovamente -- *è possibile* omettere il punto e virgola la maggior parte delle volte. Ma è più sicuro -- specialmente per un novizio -- inserirlo al termine di ogni istruzione.
@@ -110,7 +109,7 @@ alert('Hello');
110109
alert('World'); // Questo commento segue un istruzione
111110
```
112111

113-
**I commenti multilinea incominciano con un singolo carattere di slahs ed un asterisco <code>/&#42;</code> e finiscono con un asterisco ed un carattere di slash <code>&#42;/</code>.**
112+
**I commenti multilinea incominciano con un singolo carattere di slash ed un asterisco <code>/&#42;</code> e finiscono con un asterisco ed un carattere di slash <code>&#42;/</code>.**
114113

115114
Come nell'esempio:
116115

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ I numeri con valore speciale appartengono formalmente al tipo "numerico". Ovviam
6464
6565
Vedremo di più su come lavorare con i numeri nel capitolo <info:number>.
6666
67-
## BigInt
67+
## BigInt [#bigint-type]
6868
6969
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.
7070

1-js/02-first-steps/08-operators/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ Ad esempio:
6666

6767
```js run
6868
alert( 2 ** 2 ); // 2² = 4
69-
alert( 2 ** 3 ); // 2³ = 8
69+
alert( 2 ** 3 ); // 2³ = 8
7070
alert( 2 ** 4 ); // 2⁴ = 16
7171
```
7272

1-js/02-first-steps/15-function-basics/article.md

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ function showMessage() {
2020
}
2121
```
2222

23-
La parola chiave `function` va posta all'inizio; viene seguita dal *nome della funzione*, poi c'è una lista di *parametri*, racchiusi tra parentesi (in questo esempio la lista è vuota) e infine il codice della funzione, chiamato anche "corpo della funzione", racchiuso tra parentesi graffe.
23+
La parola chiave `function` va posta all'inizio; viene seguita dal *nome della funzione*, poi c'è una lista di *parametri*, racchiusi tra parentesi (separati da virgola, in questo esempio la lista è vuota, vedremo un esempio più avanti) e infine il codice della funzione, chiamato anche "corpo della funzione", racchiuso tra parentesi graffe.
2424

2525
```js
26-
function name(parameters) {
26+
function name(parameter1, parameter2, ... parameterN) {
2727
...body...
2828
}
2929
```
@@ -137,26 +137,23 @@ Solitamente, una funzione dichiara internamente tutte le variabili necessarie pe
137137

138138
## Parametri
139139

140-
Possiamo passare dei dati arbitrari ad una funzione usando i parametri (chiamati anche *argomenti della funzione*).
140+
Possiamo passare dei dati arbitrari ad una funzione usando i parametri.
141141

142142
Nell'esempio sotto, la funzione ha due parametri: `from` e `text`.
143143

144144
```js run
145-
function showMessage(*!*from, text*/!*) { // argomenti: from, text
145+
function showMessage(*!*from, text*/!*) { // parametri: from, text
146146
alert(from + ': ' + text);
147147
}
148148

149-
*!*
150-
showMessage('Ann', 'Hello!'); // Ann: Hello! (*)
151-
showMessage('Ann', "What's up?"); // Ann: What's up? (**)
152-
*/!*
149+
*!*showMessage('Ann', 'Hello!');*/!* // Ann: Hello! (*)
150+
*!*showMessage('Ann', "What's up?");*/!* // Ann: What's up? (**)
153151
```
154152
155153
Quando la funzione viene chiamata nelle righe `(*)` e `(**)`, il valore passato viene copiato nelle variabili locali `from` e `text`, che verranno utilizzate nella chiamata ad `alert`.
156154
157155
Guardiamo un altro esempio: abbiamo una variabile `from` e la passiamo a una funzione. Da notare: la funzione cambia `from`, ma il cambiamento non è visibile all'esterno perché la funzione usa sempre una copia del valore passato:
158156

159-
160157
```js run
161158
function showMessage(from, text) {
162159
@@ -175,6 +172,18 @@ showMessage(from, "Hello"); // *Ann*: Hello
175172
alert( from ); // Ann
176173
```
177174

175+
Quando un valore viene passato come parametro di funzione, vine anche chiamato *argomento*.
176+
177+
In altre parole
178+
In other words, per chiarire questi termini:
179+
180+
- Un parametro è la variabile elencata tra parentesi nella dichiarazione della funzione (fa parte della dichiarazione).
181+
- Un argomento è il valore passato alla funzione quando viene chiamata (fa parte della chiamata).
182+
183+
Dichiariamo le funzioni elencando i loro parametri, quindi le chiamiamo passando gli argomenti.
184+
185+
Nell'esempio sopra, si potrebbe dire: "la funzione `showMessage` è dichiarata con due parametri, quindi viene chiamata con due argomenti: `from` and `"Hello"`".
186+
178187
## Valori di default
179188
180189
Se non viene fornito alcun parametro, questa assume il valore `undefined`.
@@ -185,9 +194,9 @@ Ad esempio, la funzione menzionata sopra `showMessage(from, text)` può essere c
185194
showMessage("Ann");
186195
```
187196
188-
Questo non è un errore. Una chiamata simile mostrerà `"Ann: undefined"`. Non c'è nessun valore `text`, quindi si assume che `text === undefined`.
197+
Questo non è un errore. Una chiamata simile mostrerà `"*Ann*: undefined"`. Siccome non viene passato nessun valore per `text`, questo è `undefined`.
189198
190-
Se volessimo utilizzare un `text` di "default", dovremmo specificarlo dopo `=`:
199+
Possiamo specificare un cosiddetto valore "default" (da usare se l'argomento è omesso) per i parametri nella dichiarazione di funzione, usando `=`:
191200

192201
```js run
193202
function showMessage(from, *!*text = "no text given"*/!*) {
@@ -209,19 +218,23 @@ function showMessage(from, text = anotherFunction()) {
209218
```
210219

211220
```smart header="Valutazione dei parametri di default"
212-
In JavaScript, un parametro di default viene valutato ogni volta che viene chiamata una funzione senza i rispettivi parametri. Nell'esempio sopra, `anotherFunctions()` viene richiamata ogni volta che `someMessage()` viene chiamata senza il parametro `text`.
213-
```
221+
In JavaScript, un parametro di default viene valutato ogni volta che viene chiamata una funzione senza i rispettivo argomento.
222+
223+
Nell'esempio sopra, `anotherFunctions()` non viene chiamata se viene passato il parametro `text`.
214224
225+
Viene invece chiamata ogni volta che il parametro manca.
226+
```
215227

216-
#Parametri di default alternativi
217-
In alcuni casi vorremmo assegnare un valore di default a un parametro non nella dichiarazione della funzione, ma dopo, durante la sua esecuzione. (inoltre, le vecchie edizioni di JavaScript non supportavano i parametri di default; quel che segue è un metodo per ovviare ad entrambe le necessità, e che potreste trovare di frequente nei vecchi script).
228+
A volte ha senso assegnare valori default ai parametri, non nella dichiarazione della funzione, ma in una fase successiva.
218229

219-
Per controllare se un parametro è stato omesso possiamo compararlo con `undefined`:
230+
Possiamo verificare se il parametro viene passato durante l'esecuzione della funzione, confrontandolo con `undefined`:
220231

221232
```js run
222233
function showMessage(text) {
234+
// ...
235+
223236
*!*
224-
if (text === undefined) {
237+
if (text === undefined) { // if the parameter is missing
225238
text = 'empty message';
226239
}
227240
*/!*
@@ -242,11 +255,12 @@ function showMessage(from, text) {
242255
}
243256
```
244257

245-
I moderni motori JavaScript supportano il [nullish coalescing operator](info:nullish-coalescing-operator) `??`, più efficiente quando valori falsi come `0`vengono considerati regolari:
258+
I moderni motori JavaScript supportano il [nullish coalescing operator](info:nullish-coalescing-operator) `??`, più efficiente quando valori falsi come `0` vengono considerati regolari:
246259

247260
```js run
248261
//se non c'è un parametro "count", mostra "unknown"
249262
function showCount(count) {
263+
// if count is undefined or null, show "unknown"
250264
alert(count ?? "unknown");
251265
}
252266

1-js/03-code-quality/01-debugging-chrome/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Debugging in Chrome
1+
# Debugging in the browser
22

33
Prima di scrivere codice più complesso, dovremmo parlare di debugging.
44

1-js/04-object-basics/06-constructor-new/article.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,14 @@ Ora, se vogliamo creare altri utenti, possiamo chiamare `new User("Ann")`, `new
6464

6565
Questo è il principale scopo dei costruttori -- implementare codice riutilizzabile per la creazione di oggetti.
6666

67-
Ribadiamo -- tecnicamente, ogni funzione può essere utilizzata come costruttore. Ovvero: ogni funzione può essere eseguita con `new`. La "prima lettera maiuscola" è semplicemente una convenzione, per rendere esplicito che la funzione deve essere eseguita con `new`.
67+
Ribadiamo -- tecnicamente, ogni funzione (eccetto le arrow functions, siccome non hanno `this`) può essere utilizzata come costruttore. Ovvero: ogni funzione può essere eseguita con `new`. La "prima lettera maiuscola" è semplicemente una convenzione, per rendere esplicito che la funzione deve essere eseguita con `new`.
6868

6969
````smart header="new function() { ... }"
70-
Se abbiamo molte linee di codice utili alla creazione di un unico oggetto, possiamo raggrupparle in un costruttore, come qui:
70+
Se abbiamo molte linee di codice utili alla creazione di un unico oggetto, possiamo raggrupparle in un costruttore richiamato contestualmente, come qui:
7171
7272
```js
73-
let user = new function() {
73+
// create a function and immediately call it with new
74+
let user = new function() {
7475
this.name = "John";
7576
this.isAdmin = false;
7677
@@ -80,7 +81,7 @@ let user = new function() {
8081
};
8182
```
8283
83-
Il costruttore non può essere chiamato nuovamente, perché non è salvato da nessuna parte; viene solo creato e chiamato. Questo trucco consente di incapsulare un codice che costruisce un singolo oggetto, senza possibilità di riutilizzo futuro.
84+
Il costruttore non può essere chiamato nuovamente, perché non è salvato da nessuna parte; viene solo creato e chiamato. Questo trucco consente di incapsulare un codice che costruisce un singolo oggetto, senza necessità di riutilizzo futuro.
8485
````
8586

8687
## Costruttori modalità test: new.target

0 commit comments

Comments
 (0)