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/02-first-steps/16-function-expressions/article.md
+20-20Lines changed: 20 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# Espressioni di funzione
1
+
# Function expression
2
2
3
3
In JavaScript, una funzione non è una "struttura magica del linguaggio", ma un valore speciale.
4
4
@@ -10,7 +10,7 @@ function sayHi() {
10
10
}
11
11
```
12
12
13
-
E' disponibile un'altra sintassi per creare una funzione, chiamata *Espressione di Funzione*.
13
+
E' disponibile un'altra sintassi per creare una funzione, chiamata *function expression*.
14
14
15
15
La sintassi:
16
16
@@ -65,7 +65,7 @@ Quello che succede, nel dettaglio, è:
65
65
Ancora una volta: non ci sono parentesi dopo `sayHi`. Se ci fossero state, allora `func = sayHi()` avrebbe inserito *il risultato della chiamata*`sayHi()`, non *la funzione*`sayHi`.
66
66
3. Adesso la funzione può essere richiamata sia con `sayHi()` che con `func()`.
67
67
68
-
Avremmo anche potuto utilizzare, nella prima riga, un'espressione di funzione per dichiarare `sayHi`:
68
+
Avremmo anche potuto utilizzare, nella prima riga, una function expression per dichiarare `sayHi`:
69
69
70
70
```js
71
71
letsayHi=function() {
@@ -80,7 +80,7 @@ Tutto funzionerebbe ugualmente. Risulta anche più chiaro cosa sta succedendo, g
80
80
81
81
82
82
````smart header="Perché c'è un punto e virgola alla fine?"
83
-
Vi starete chiedendo perché con l'espressione di funzione bisogna mettere `;` alla fine, mentre con la dichiarazione di funzione non serve:
83
+
Vi starete chiedendo perché con la function expression bisogna mettere `;` alla fine, mentre con la dichiarazione di funzione non serve:
84
84
85
85
```js
86
86
function sayHi() {
@@ -94,12 +94,12 @@ let sayHi = function() {
94
94
95
95
La risposta è semplice:
96
96
- Non c'è bisogno di `;` alla fine dei blocchi di codice che utilizzano una sintassi del tipo `if { ... }`, `for { }`, `function f { }` etc.
97
-
- Un'espressione di funzione viene utilizzata all'interno di un'istruzione: `let sayHi = ...;`, come valore. Non è un blocco di codice. Quindi il `;` è consigliato al termine dell'istruzione, indipendentemente dal valore. Il punto e virgola non è collegato all'espressione di funzione; più semplicemente, termina un'istruzione.
97
+
- Una function expression viene utilizzata all'interno di un'istruzione: `let sayHi = ...;`, come valore. Non è un blocco di codice. Quindi il `;` è consigliato al termine dell'istruzione, indipendentemente dal valore. Il punto e virgola non è collegato alla function expression; più semplicemente, termina un'istruzione.
98
98
````
99
99
100
-
## Funzioni richiamate (*callback functions*)
100
+
## *Callback functions* (funzioni richiamate)
101
101
102
-
Diamo un'occhiata ad ulteriori esempi di passaggio di funzione come valore e utilizzo di espressioni di funzione.
102
+
Diamo un'occhiata ad ulteriori esempi di passaggio di funzione come valore e utilizzo della sintassi function expression.
103
103
104
104
Scriveremo una funzione `ask(question, yes, no)` con tre parametri:
105
105
@@ -140,7 +140,7 @@ Queste funzioni possono essere molto utili. La principale differenza tra un'impl
140
140
141
141
L'idea è di passare una funzione e di "richiamarla" più tardi se necessario. Nel nostro caso `showOk` diventa la callback per la risposta "yes", e `showCancel` per la risposta "no".
142
142
143
-
Possiamo utilizzare un'espressione di funzione per scrivere la stessa funzione più concisamente:
143
+
Possiamo utilizzare una function expression per scrivere la stessa funzione più concisamente:
144
144
145
145
```js run no-beautify
146
146
functionask(question, yes, no) {
@@ -172,7 +172,7 @@ Possiamo passarla tra le variabili ed eseguirla quando vogliamo.
172
172
```
173
173
174
174
175
-
## Espressione di Funzioni vs Dichiarazione di Funzioni
175
+
## Function expression vs Dichiarazione di Funzioni
176
176
177
177
Cerchiamo di elencare le differenze chiave tra Dichiarazioni ed Espressioni di Funzione.
178
178
@@ -186,18 +186,18 @@ Primo, la sintassi: come distinguerle nel codice.
186
186
return a + b;
187
187
}
188
188
```
189
-
-*Espressione di funzione:* una funzione, creata all'interno di un'espressione o all'interno di un altro costrutto. Qui, la funzione è creata alla destra dell'"espressione di assegnazione"`=`:
189
+
-*Function expression:* una funzione, creata all'interno di un'espressione o all'interno di un altro costrutto. Qui, la funzione è creata alla destra dell'"espressione di assegnazione"`=`:
190
190
191
191
```js
192
-
// Espressione di funzione
192
+
// function expression
193
193
let sum = function(a, b) {
194
194
return a + b;
195
195
};
196
196
```
197
197
198
198
La differenza più subdola è *quando* una funzione viene creata dal motore JavaScript.
199
199
200
-
**Un'espressione di funzione viene creata quando l'esecuzione la raggiunge ed è utilizzabile solo da quel momento in poi.**
200
+
**Una function expression viene creata quando l'esecuzione la raggiunge ed è utilizzabile solo da quel momento in poi.**
201
201
202
202
Quando il flusso di esecuzione passa alla destra dell'operatore di assegnamento `let sum = function…` , la funzione viene creata e, a partire da questo momento, può essere utilizzata (assegnata, chiamata, etc...).
203
203
@@ -225,7 +225,7 @@ function sayHi(name) {
225
225
226
226
La dichiarazione di funzione `sayHi` viene creata quando JavaScript si sta preparando ad eseguire lo script ed è visibile in ogni suo punto.
227
227
228
-
...Se fosse stata un'espressione di funzione, non avrebbe funzionato:
228
+
...Se fosse stata una function expression, non avrebbe funzionato:
229
229
230
230
```js run refresh untrusted
231
231
*!*
@@ -271,7 +271,7 @@ welcome(); // Errore: welcome non è definita
271
271
*/!*
272
272
```
273
273
274
-
Questo accade perché una dichiarazione di funzione è visibile solamente all'interno del blocco di codice in cui è stata definitia.
274
+
Questo accade perché una dichiarazione di funzione è visibile solamente all'interno del blocco di codice in cui è stata definita.
275
275
276
276
Un altro esempio:
277
277
@@ -308,7 +308,7 @@ welcome(); // Errore: welcome non è definita
308
308
309
309
Cosa possiamo fare per rendere visibile `welcome` all'esterno del blocco `if`?
310
310
311
-
Il giusto approccio è quello di utilizzare un'espressione di funzione ed assegnarla ad una variabile `welcome`, che viene dichiarata all'esterno di `if` ed ha quindi la corretta visibilità.
311
+
Il giusto approccio è quello di utilizzare una function expression ed assegnarla ad una variabile `welcome`, che viene dichiarata all'esterno di `if` ed ha quindi la corretta visibilità.
312
312
313
313
Ora funziona:
314
314
@@ -351,7 +351,7 @@ welcome(); // ora funziona
351
351
```
352
352
353
353
354
-
```smart header="Quando conviene scegliere una dichiarazione di funzione piuttosto di un'espressione di funzione?"
354
+
```smart header="Quando conviene scegliere una dichiarazione di funzione piuttosto di una function expression?"
355
355
Come regola fondamentale, quando abbiamo la necessità di dichiarare una funzione, la prima opzione da considerare è la dichiarazione di funzione. Fornisce maggiore libertà per quanto riguarda l'organizzazione del codice, poiché possiamo utilizzare la funzione anche prima della sua dichiarazione.
356
356
357
357
Risulta anche più facile vedere `function f(…) {…}`, nel codice, piuttosto di `let f = function(…) {…}`. La dichiarazione di funzione è più facile da individuare.
@@ -363,10 +363,10 @@ Risulta anche più facile vedere `function f(…) {…}`, nel codice, piuttosto
363
363
364
364
- Le funzioni sono valori. Possono essere assegnate, copiate o dichiarate in qualsiasi punto del codice.
365
365
- Se la funzione viene dichiarata come un blocco "separato" dal flusso d'esecuzione principale del codice, tale definizione viene chiamata "dichiarazione di funzione".
366
-
- Se la funzione viene definita tramite un'espressione, viene chiamata "espressione di funzione".
367
-
- Le dichiarazioni di funzione vengono processate prima che il bloco di codice dove sono state definitie sia raggiunto.
368
-
- Le espressioni di funzione vengono processate quando il flusso d'esecuzione del codice principale le raggiunge.
366
+
- Se la funzione viene definita tramite un'espressione, viene chiamata "function expression".
367
+
- Le dichiarazioni di funzione vengono processate prima che il blocco di codice dove sono state definite sia raggiunto.
368
+
- Le function expression vengono processate quando il flusso d'esecuzione del codice principale le raggiunge.
369
369
370
370
Nella maggior parte dei casi, quando abbiamo bisogno di dichiarare una funzione una dichiarazione di funzione è preferibile poiché è visibile anche prima della sua dichiarazione. Questo ci fornisce più flessibilità nell'organizzazione del codice, e solitamente risulta più leggibile.
371
371
372
-
Dovremmo, quindi, utilizzare un'espressione di funzione solo quando una dichiarazione di funzione non è adatta a un caso specifico. Abbiamo visto un paio di esempi in questo capitolo, e ne vederemo altri in futuro.
372
+
Dovremmo, quindi, utilizzare una function expression solo quando una dichiarazione di funzione non è adatta a un caso specifico. Abbiamo visto un paio di esempi in questo capitolo, e ne vederemo altri in futuro.
0 commit comments