Funzioni
Scrivi una volta sola function square(n) { return n * n; }, e square(4) dà 16, square(9) dà 81, e così via per qualsiasi numero passi.
Dare un nome a un lavoro
Hai già usato funzioni scritte da altri: console.log, Math.round e toUpperCase sono tutte funzioni. Una funzione è un blocco di codice con un nome che svolge un solo compito. La definisci una volta e poi la chiami, per nome, tutte le volte che vuoi. Le funzioni ti evitano di copiare le stesse righe qua e là, e ti permettono di pensare a un programma in pezzi più grandi: «calcola la mancia, poi dividi il conto» invece di una lunga lista di calcoli.
function greet(name) {
return "Hello, " + name + "!";
}
console.log(greet("Ana")); // Hello, Ana!
console.log(greet("Ji")); // Hello, Ji!La definizione comincia con la parola chiave function, poi il nome della funzione, poi un elenco di parametri fra parentesi. Un parametro è una variabile che riceve un valore quando la funzione viene chiamata; qui è name. Il corpo fra parentesi graffe fa il lavoro. Quando chiami greet("Ana"), il valore "Ana", chiamato argomento, viene messo nel parametro name, e il corpo viene eseguito.
return restituisce un valore
La parola chiave return termina la funzione e rimanda un valore al punto in cui la funzione è stata chiamata. La chiamata greet("Ana") è un'espressione, e il suo valore è ciò che è stato restituito. Ecco perché può stare dentro console.log, dentro un calcolo, o essere salvata in una variabile: const msg = greet("Ana");.
Restituire un valore e stamparlo sono cose diverse, e chi comincia spesso le confonde. Una funzione che chiama soltanto console.log mostra qualcosa sullo schermo, ma non restituisce nulla. La sua chiamata vale undefined, quindi non puoi usarne il risultato in un calcolo. Come regola, fai in modo che le funzioni restituiscano risultati e lascia decidere al codice che le chiama se stamparli.
function addPrint(a, b) {
console.log(a + b);
}
function add(a, b) {
return a + b;
}
const x = add(2, 3) * 10;
console.log(x); // 50
addPrint(2, 3); // stampa 5, ma non restituisce niente di utilizzabilereturn ferma anche subito la funzione. Le righe che vengono dopo nello stesso percorso non vengono eseguite. Questo ti permette di gestire i casi speciali all'inizio: if (n < 0) return "negative"; in cima a una funzione, con il caso normale scritto sotto.
Più parametri e valori predefiniti
Una funzione può avere più parametri, separati da virgole, e gli argomenti vengono abbinati in ordine: in add(2, 3), a vale 2 e b vale 3. Se in una chiamata manca un argomento, quel parametro è undefined. Puoi dare a un parametro un valore predefinito, usato quando non viene passato nulla: function tip(bill, rate = 0.15) usa 0.15 a meno che chi chiama non fornisca un'altra percentuale.
Funzioni freccia
Il JavaScript moderno ha anche un modo più breve per scrivere piccole funzioni, la funzione freccia (arrow function). const square = (n) => n * n; significa la stessa cosa della funzione square dell'introduzione. Quando il corpo è una sola espressione, il suo valore viene restituito automaticamente, senza graffe e senza la parola chiave return. Vedrai funzioni freccia ovunque nel codice moderno.
Le variabili interne restano dentro
I parametri e le variabili dichiarate dentro una funzione esistono solo lì dentro. Questo si chiama ambito (scope). Due funzioni diverse possono avere ciascuna una variabile chiamata total senza disturbarsi, e il codice fuori da una funzione non può vedere le sue variabili private. Una funzione può leggere le variabili dichiarate fuori, ma le funzioni più pulite ricevono tutto ciò che serve tramite i parametri e restituiscono tutto con return, così le puoi capire da sole.
function nome(parametro) { return risultato; } const nome = (parametro) => risultato;
| funzione | Un blocco di codice con un nome che svolge un solo compito |
| chiamata | Eseguire una funzione: nome(argomenti) |
| parametro | Una variabile nella definizione che riceve un valore |
| argomento | Il valore passato in una chiamata |
| return | Termina la funzione e restituisce un valore |
| parametro predefinito | rate = 0.15: usato quando non si passa nessun argomento |
| funzione freccia | (n) => n * n |
| ambito (scope) | Dove si vede una variabile; ciò che sta dentro una funzione resta dentro |
- Che cosa stampa?
function double(n) { return n * 2; } console.log(double(7)); - Che cosa stampa?
function add(a, b) { return a + b; } console.log(add(2, 3) * add(1, 1)); - Che cosa stampa?
function minus(a, b) { return a - b; } console.log(minus(3, 10)); - Che cosa stampa?
function f(x) { return x + 1; console.log("hi"); } console.log(f(1));- 2
- hi, then 2
- 2, then hi
- Che cosa stampa?
function show(n) { console.log(n); } const r = show(5); console.log(typeof r);- 5, then number
- 5, then undefined
- Only undefined
- Che cosa stampa?
const triple = (n) => n * 3; console.log(triple(4)); - Che cosa stampa?
function tip(bill, rate = 0.1) { return bill * rate; } console.log(tip(50)); - Che cosa stampa?
function tip(bill, rate = 0.1) { return bill * rate; } console.log(tip(50, 0.2)); - Che cosa stampa?
function sign(n) { if (n < 0) return "neg"; if (n === 0) return "zero"; return "pos"; } console.log(sign(0)); - In
function area(w, h)chiamata comearea(3, 5), come si chiamano w e h, e come si chiamano 3 e 5?- w e h sono parametri; 3 e 5 sono argomenti
- w e h sono argomenti; 3 e 5 sono parametri
- Sono tutti e quattro valori restituiti
- function nome(parametri) { ... } definisce; nome(argomenti) chiama.
- Gli argomenti vengono abbinati ai parametri in ordine.
- return termina la funzione e restituisce un valore; stampare non è restituire.
- I parametri predefiniti sostituiscono gli argomenti mancanti.
- Funzioni freccia: (n) => n * n.
- Le variabili dentro una funzione restano dentro (ambito).
Fonti di questo corso (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
Consultato il: 2026-10-17