Funkcja zagnieżdżona
Lekcja 7 z 14 w kursie Deklaracje funkcji w JavaScript w Coddy.
Funkcje zagnieżdżone przypominają superbohaterów z pomocnikami — to potężne funkcje, które mogą tworzyć i używać innych funkcji wewnątrz siebie.
Funkcja zagnieżdżona to funkcja zdefiniowana wewnątrz innej funkcji. Funkcja wewnętrzna ma dostęp do zmiennych i parametrów funkcji zewnętrznej, co tworzy lokalny zakres wewnątrz funkcji zewnętrznej.
Wyobraź sobie, że masz główną funkcję (superbohatera), która potrzebuje pomocy przy konkretnym zadaniu. Zamiast korzystać z zewnętrznej funkcji, może utworzyć wewnątrz siebie funkcję pomocniczą (pomocnika), która wykona to konkretne zadanie. Do tej funkcji pomocniczej może mieć dostęp i używać jej tylko główna funkcja. Na przykład:
function calculateDiscount(originalPrice, discountPercentage) {
function calculateDiscountAmount(price, discount) {
return price * discount; // Oblicz kwotę rabatu (funkcja wewnętrzna)
}
const discountAmount = calculateDiscountAmount(originalPrice, discountPercentage / 100);
const finalPrice = originalPrice - discountAmount;
return finalPrice;
}
const discountedPrice = calculateDiscount(100, 20);
console.log(discountedPrice); // Wynik: 80- Funkcja zewnętrzna:
- Definiujemy funkcję o nazwie
calculateDiscount, która przyjmuje dwa argumenty:originalPriceidiscountPercentage.
- Definiujemy funkcję o nazwie
- Funkcja wewnętrzna:
- Wewnątrz funkcji zewnętrznej definiujemy kolejną funkcję o nazwie
calculateDiscountAmount. To funkcja zagnieżdżona. Przyjmuje dwa argumenty:priceidiscount(zauważ, że nie ma bezpośredniego dostępu dooriginalPriceanidiscountPercentage).
- Wewnątrz funkcji zewnętrznej definiujemy kolejną funkcję o nazwie
- Wynik: Funkcja zwraca cenę końcową, która wynosi 80 (po zastosowaniu rabatu w wysokości 20%).
Wyzwanie
ŁatwyTwoim zadaniem jest utworzenie zagnieżdżonej funkcji o nazwie calculateTaxAmount, która powinna pobierać wartości price i taxRate z funkcji zewnętrznej calculateWithTax, obliczać kwotę podatku i ją zwracać. (Kwota podatku to cena pomnożona przez stawkę podatku.)
Na koniec funkcja zewnętrzna powinna obliczyć i zwrócić cenę końcową (z podatkiem), dodając kwotę podatku do pierwotnej ceny.
Spróbuj swoich sił
function calculateWithTax(product) {
let price = product.price;
let taxRate = product.taxRate;
// napisz kod tutaj
}
Wszystkie lekcje w sekcji Deklaracje funkcji w JavaScript
1Wprowadzenie do kursu
Czego się nauczysz?4Wyzwania kamieni milowych
Sprawdzanie stanu liczbyPowitania z użyciem funkcji strzałkowejSystem oceniania2Wprowadzenie do funkcji
Czym jest funkcja?Funkcje czysteĆwiczenie z funkcji nr 1Ćwiczenie z funkcji nr 23Sposoby deklarowania funkcji
Podstawowa funkcjaFunkcja zagnieżdżonaZwracanie funkcjiWyrażenia funkcyjneFunkcja strzałkowaKonstruktor funkcjiPoćwicz samodzielnie: Kompilator JavaScript online