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
Copy file name to clipboardExpand all lines: 1-js/01-getting-started/1-intro/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ Esistono altri motori JavaScript, tra cui:
26
26
27
27
-[V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- per Chrome e Opera.
28
28
-[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.
30
30
31
31
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.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/02-structure/article.md
+18-19Lines changed: 18 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -45,7 +45,7 @@ alert(3 +
45
45
+2);
46
46
```
47
47
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.
49
49
50
50
**Ma ci sono casi in cui JavaScript "fallisce" nell'interpretare un punto e virgola, dove invece sarebbe necessario.**
51
51
@@ -55,39 +55,38 @@ Gli errori di questo tipo sono molto difficili da trovare e sistemare.
55
55
Se sei curioso di vedere un esempio concreto di questo tipo di errore, dai un occhiata al seguente codice:
56
56
57
57
```js run
58
-
[1, 2].forEach(alert)
58
+
alert("Hello");
59
+
60
+
[1, 2].forEach(alert);
59
61
```
60
62
61
63
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`.
62
64
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`:
64
66
65
67
```js run no-beautify
66
-
alert("There will be an error")
68
+
alert("Hello")
67
69
68
-
[1, 2].forEach(alert)
70
+
[1, 2].forEach(alert);
69
71
```
70
72
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.
76
74
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.
79
76
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.
81
78
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:
85
80
86
81
```js run no-beautify
87
-
alert("There will be an error")[1, 2].forEach(alert)
82
+
alert("Hello")[1, 2].forEach(alert);
88
83
```
89
84
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.
91
90
````
92
91
93
92
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');
110
109
alert('World'); // Questo commento segue un istruzione
111
110
```
112
111
113
-
**I commenti multilinea incominciano con un singolo carattere di slahs ed un asterisco <code>/*</code> e finiscono con un asterisco ed un carattere di slash <code>*/</code>.**
112
+
**I commenti multilinea incominciano con un singolo carattere di slash ed un asterisco <code>/*</code> e finiscono con un asterisco ed un carattere di slash <code>*/</code>.**
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/05-types/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -64,7 +64,7 @@ I numeri con valore speciale appartengono formalmente al tipo "numerico". Ovviam
64
64
65
65
Vedremo di più su come lavorare con i numeri nel capitolo <info:number>.
66
66
67
-
## BigInt
67
+
## BigInt [#bigint-type]
68
68
69
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.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/15-function-basics/article.md
+32-18Lines changed: 32 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,10 +20,10 @@ function showMessage() {
20
20
}
21
21
```
22
22
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.
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`.
156
154
157
155
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'esternoperché lafunzioneusasempreunacopiadelvalorepassato:
Nell'esempio sopra, si potrebbe dire: "la funzione `showMessage` è dichiarata con due parametri, quindi viene chiamata con due argomenti: `from` and `"Hello"`".
186
+
178
187
## Valori di default
179
188
180
189
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
185
194
showMessage("Ann");
186
195
```
187
196
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`.
189
198
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 `=`:
191
200
192
201
```js run
193
202
function showMessage(from, *!*text = "no text given"*/!*) {
@@ -209,19 +218,23 @@ function showMessage(from, text = anotherFunction()) {
209
218
```
210
219
211
220
```smart header="Valutazione dei parametri di default"
212
-
InJavaScript, unparametrodidefaultvienevalutatoognivoltachevienechiamataunafunzionesenzairispettiviparametri. 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`.
214
224
225
+
Viene invece chiamata ogni volta che il parametro manca.
226
+
```
215
227
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.
218
229
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`:
220
231
221
232
```js run
222
233
functionshowMessage(text) {
234
+
// ...
235
+
223
236
*!*
224
-
if (text === undefined) {
237
+
if (text ===undefined) {// if the parameter is missing
225
238
text ='empty message';
226
239
}
227
240
*/!*
@@ -242,11 +255,12 @@ function showMessage(from, text) {
242
255
}
243
256
```
244
257
245
-
ImodernimotoriJavaScriptsupportanoil [nullishcoalescingoperator](info:nullish-coalescing-operator) `??`, più efficientequandovalorifalsicome`0`vengonoconsideratiregolari:
258
+
I moderni motori JavaScript supportano il [nullish coalescing operator](info:nullish-coalescing-operator)`??`, più efficiente quando valori falsi come `0`vengono considerati regolari:
246
259
247
260
```js run
248
261
//se non c'è un parametro "count", mostra "unknown"
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/06-constructor-new/article.md
+5-4Lines changed: 5 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -64,13 +64,14 @@ Ora, se vogliamo creare altri utenti, possiamo chiamare `new User("Ann")`, `new
64
64
65
65
Questo è il principale scopo dei costruttori -- implementare codice riutilizzabile per la creazione di oggetti.
66
66
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`.
68
68
69
69
````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:
71
71
72
72
```js
73
-
let user = new function() {
73
+
// create a function and immediately call it with new
74
+
let user = new function() {
74
75
this.name = "John";
75
76
this.isAdmin = false;
76
77
@@ -80,7 +81,7 @@ let user = new function() {
80
81
};
81
82
```
82
83
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.
0 commit comments