470
Rozdział 10.
Przekazywanie funkcji do funkcji
Przetwarzanie listy pasażerów
Teraz potrzebujemy funkcji, która będzie pobierać listę pasażerów, oraz innej funkcji,
która będzie wiedzieć, jak wykonać określony test na obiekcie jednego pasażera (np.
sprawdzenie, czy nie znajduje się on na liście osób objętych zakazem lotów). Poniżej
pokazaliśmy, jak to zrobić.
function processPassengers(passengers, testFunction) {
for (var i = 0; i < passengers.length; i++) {
if (testFunction(passengers[i])) {
return false;
}
}
return true;
}
Funkcja processPassengers
ma dwa parametry.
Pierwszym z nich jest
tablica pasażerów.
Listę pasażerów przeglądamy
kolejno, jeden po drugim.
Jeśli funkcja zwróci wartość true, zwracamy false.
Innymi słowy, jeśli pasażer nie przeszedł testu
pomyślnie (np. nie zapłacił lub znajduje się na liście
osób objętych zakazem lotów), nie zezwolimy na start
samolotu!
Jeśli żaden z pasażerów nie spełnił
warunku, docieramy do tego miejsca
funkcji i zwracamy wartość true.
Drugim jest funkcja, która
wie, jak sprawdzić, czy dany
pasażer spełnia określony
warunek.
A następnie wywołujemy funkcję,
przekazując do niej aktualnie
przetwarzanego pasażera.
Teraz potrzebujemy tylko funkcji, które potrafią sprawdzać pasażerów
(na szczęście, napisałeś je na poprzedniej stronie w ramach ćwiczenia
„Zaostrz ołówek”
). Oto one.
function checkNoFlyList(passenger) {
return (passenger.name === ”Dr Zatan”);
}
function checkNotPaid(passenger) {
return (!passenger.paid);
}
To jest funkcja sprawdzająca, czy dany pasażer
nie znajduje się na liście osób objętych zakazem
lotów. W naszym przypadku ta lista jest krótka:
obejmuje tylko dr. Zatana. Zatem zwracamy true,
jeśli pasażerem jest dr Zatan, oraz false we
wszystkich pozostałych przypadkach (co oznacza,
że dany pasażer nie znajduje się na liście osób
objętych zakazem lotów).
A to jest funkcja, która sprawdza, czy dany
pasażer zapłacił za przelot. Sprowadza się
ona do sprawdzenia wartości właściwości paid
obiektu pasażera. Jeśli pasażer nie zapłacił,
funkcja zwraca wartość true.
Uważaj: to jest jeden pasażer (obiekt),
a nie lista pasażerów (tablica obiektów).

Get Programowanie w JavaScript Rusz głową! now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.