Menu
Coddy logo textTech

Funzione annidata

Lezione 7 di 14 del corso Dichiarazioni di funzione in JavaScript di Coddy.

Le funzioni annidate sono come supereroi con dei compagni di avventura: sono funzioni potenti che possono creare e usare altre funzioni al loro interno.

Una funzione annidata è una funzione definita all'interno di un'altra funzione. La funzione interna ha accesso alle variabili e ai parametri della funzione esterna, creando uno scope locale all'interno della funzione esterna.

Immagina di avere una funzione principale (il supereroe) che ha bisogno di aiuto per un compito specifico. Invece di affidarsi a una funzione esterna, può creare al suo interno una funzione di supporto (il compagno di avventura) per svolgere quel compito specifico. È possibile accedere a questa funzione di supporto e usarla solo dalla funzione principale. Per esempio:

function calculateDiscount(originalPrice, discountPercentage) {
  	function calculateDiscountAmount(price, discount) {
    	return price * discount; // Calcola l'importo dello sconto (funzione interna)
  	}

  	const discountAmount = calculateDiscountAmount(originalPrice, discountPercentage / 100);
  	const finalPrice = originalPrice - discountAmount;
  	return finalPrice;
}

const discountedPrice = calculateDiscount(100, 20);
console.log(discountedPrice); // Output: 80
  • Funzione esterna:
    • Definiamo una funzione chiamata calculateDiscount che accetta due argomenti: originalPrice e discountPercentage.
  • Funzione interna:
    • All'interno della funzione esterna, definiamo un'altra funzione chiamata calculateDiscountAmount. Questa è la funzione annidata. Accetta due argomenti: price e discount (nota che non ha accesso diretto a originalPrice o discountPercentage).
  • Output: La funzione restituisce il prezzo finale, che è 80 (dopo aver applicato lo sconto del 20%).
challenge icon

Sfida

Facile

Il tuo compito è creare una funzione annidata denominata calculateTaxAmount che prenda price e taxRate dalla funzione esterna calculateWithTax, calcoli l'importo dell'imposta e lo restituisca. (L'importo dell'imposta è il prezzo moltiplicato per l'aliquota fiscale)

Infine, la funzione esterna dovrebbe calcolare e restituire il prezzo finale (imposta inclusa) sommando l'importo dell'imposta al prezzo originale e restituire il prezzo finale.

Provalo tu

function calculateWithTax(product) {
    let price = product.price;
    let taxRate = product.taxRate;
   // scrivi il codice qui
}

Tutte le lezioni di Dichiarazioni di funzione in JavaScript

Esercitati da solo: Compilatore JavaScript online