logo Dove iniziare Linguaggi Aiuto Blog
Home Dove iniziare Linguaggi Aiuto e Supporto Info e Blog

Funzioni: return e variabili

Nella lezione precedente, abbiamo parlato delle funzioni: blocchi di codice che svolgono determinate istruzioni. Ma ci sono alcune cose ancora da approfondire. In questa lezione, vediamo cosa è e come usare return e le variabili all'interno di una funzione.

Le variabili nelle funzioni

Come abbiamo visto nella lezione precedente, i parametri di una funzione sono visibili solamente all'interno del blocco, e non fuori.

function messaggio(parola) {
  alert(parola);  // Risultato: "ciao"
}

alert(parola);  // Errore
messaggio("ciao");
alert(parola);  // Errore

Lo stesso comportamento hanno le variabili dichiarate all'interno delle funzioni: non sono visibili all'esterno. Questo accade perché, terminata la funzione, vengono distrutte tutte le variabili dichiarate.

function calcola() {
  const numero = 2;
  alert(numero * 3);
}

alert(numero);  // Errore
calcola();
alert(numero);  // Errore

Tuttavia, le variabili dichiarate all'esterno della funzione (ma prima della chiamata alla funzione) sono visibili:

function calcola() {
  alert(numero * 3);
}

const numero = 2;
calcola();

Come salvare le variabili: chiamate alle funzioni e return

Come abbiamo visto, tutte le variabili all'interno della funzione vengono distrutte. Per salvare una variabile o un valore, si utilizza l'istruzione return seguita dalla variabile o dal valore.

function calcolaSomma(a, b) {
  somma = a + b;
  return somma;
}

calcolaSomma(3, 6);

Nell'esempio, viene restituito il valore di somma. Tuttavia, per trasferire il valore somma (con return) ad una variabile esterna, dobbiamo utilizzare una chiamata alla funzione diversa.

La sintassi da usare per la chiamata alla funzione è: variabile = nome_funzione(parametri). Vediamo un esempio.

function calcolaSomma(a, b) {
  somma = a + b;
  return somma;
}

let risultato = calcolaSomma(3, 6);
alert(risultato);  // Risultato: 9

In questo caso, il valore di somma viene trasferito, grazie al return, dalla funzione a risultato.

Il return può trasferire qualsiasi tipo di valore: stringhe, numeri, array, oggetti e valori booleani (true e false). Inoltre, il return esce sempre dalla funzione, come il break per i cicli di for.

Esempio di funzione

Ora che abbiamo appreso tutto l'essenziale per le funzioni, vediamo un esempio concreto.

Dobbiamo chiedere all'utente, tramite prompt, una password. Questa password deve avere almeno 8 caratteri. Utilizziamo il ciclo di while per effettuare una nuova richiesta in caso di password errata.

// Funzione
function verificaPassword(password) {
  // Verifica la lunghezza della password
  if (password.length < 8) {
    // La password non rispetta i requisiti
    return false;  // Viene restituito false
  }

  // Se si arriva qui, significa che la password ha almeno 8 caratteri
  return true;  // Viene restituito true
}

let passwordValida = false;

// Il ciclo richiede la password finché non è valida
while (passwordValida == false) {
  const passwordUtente = prompt("Inserisci la tua password:");
  // Chiamata alla funzione
  passwordValida = verificaPassword(passwordUtente);

  // Se la password è valida, esci dal ciclo while
  if (passwordValida) {
    alert("Password valida!");
  } else {
    alert("La password non rispetta i requisiti. Riprova.");
  }
}

Prova!Completa gli spazi vuoti con il testo appropriato.
// Esci dalla funzione e restituisci la variabile numero
function calcola(a, b) {
  const numero = a + b;
  ;
}