Controllo del flusso

Il controllo del flusso è l'ordine in cui le dichiarazioni vengono eseguite in un programma. Il controllo del flusso di default è l'ordine di lettura ed esecuzione delle dichiarazioni da sinistra a destra, dall'alto verso il basso in un file di programma.

Le strutture di controllo come i condizionamenti (la dichiarazione if ad esempio) modificano il flusso eseguendo blocchi di codice solo se determinate condizioni sono soddisfatte. Queste strutture permettono ad un programma di decidere quale codice viene eseguito mentre il programma è in esecuzione.

Dichiarazione if

Una dichiarazione if accetta un'espressione con una serie di parentesi.

Se l'espressione valuta è vera, allora il codice all'interno del suo corpo di codice viene eseguito.

Se l'espressione valuta è falsa, il codice racchiuso nella dichiarazione non viene eseguito.

const inviaSMS = true;

if (inviaSMS) {
  console.log('Messaggio inviato');
}

Dichiarazione else

Un altro blocco di codice può essere aggiunto con la dichiarazione else ad un blocco if o ad una serie di blocchi if. Il codice dell'else sarà eseguito solo se la condizione dell'if è falsa.

const cenaPreparata = false;

if (cenaPreparata) {
  console.log('Cena pronta');
} else {
  console.log('La cena non è pronta');
}

Operatore logico or

L'operatore logico OR , scritto con le due barre verticali ||, controlla due valori e restituisce un booleano. Se uno o entrambi i valori sono veri, restituisce True. Se entrambi i valori sono falsi, restituisce False.

console.log(true || false);
console.log(10 > 5 || 10 > 20);
console.log(false || false);
console.log(10 > 100 || 10 > 20);
true
true
false
false

Operatore logico not

L'operatore logico NOT, scritto con il punto esclamativo,  può essere utilizzato per fare una delle seguenti operazioni:

  • Invertire un valore booleano.
  • Invertire la veridicità dei valori non booleani.
let a = true;
let oppostoDiA = !a;

Operatore ternario ===

L'operatore ternario permette una sintassi compatta nel caso di decisioni binarie (scegliendo tra due scelte).

Accetta una condizione seguita da un operatore ?, e poi due espressioni separate dai due punti.

Se la condizione valutata è vera, viene eseguita la prima espressione, altrimenti viene eseguita la seconda espressione.

let prezzo = 10.5;
let giorno = "Domenica";

giorno === "Domenica" ? prezzo += 1.5 : prezzo -= 1.5;

Operatore logico and

L'operatore logico AND, scritto &&, controlla due valori e restituisce un booleano. Se entrambi i valori sono veri, allora ritorna True. Se uno, o entrambi, dei valori è falso, allora restituisce False.

console.log(true && true);      
console.log(1 > 2 && 2 > 1);    
console.log(true && false);  
console.log(4 === 4 && 3 > 1);  
true
false
false
true

Dichiarazione switch

Le dichiarazioni switch forniscono un mezzo per controllare un'espressione rispetto a più clausole case. Se un case corrisponde, il codice all'interno di tale clausola viene eseguito.

La clausola case dovrebbe terminare con una parola chiave break. Se nessun caso corrisponde ma è inclusa una clausola di default, il codice all'interno del default verrà eseguito.

Nota: Se la pausa viene omessa, l'istruzione switch continuerà a controllare i valori case fino a quando non incontrerà una pausa o il flusso non viene interrotto.

const cibo = 'pasta';

switch (cibo) {
   case 'patateFritte':
     console.log('Buone le patate!');
     break;
   case 'pizza':
     console.log('Pizzaaaaaaa!!!');
     break;
   default:
     console.log('Buon appetito');
}
Pizzaaaaaaa!!!

Clausola else if

Dopo un iniziale if, il codice dentro la clausola else if può controllare una condizione aggiuntiva. Un altro blocco di codice dentro l'else può essere aggiunto, come risultato finale, dopo i blocchi precedenti dentro la clausola else if, se le condizioni non sono vere.

const taglia = 56;

if (taglia > 58) {
  console.log('Extra large');
} else if (taglia > 50) {
  console.log('Large');
} else if (taglia > 40) {
  console.log('Small');
} else {
  console.log('Super small');
}
Large