Higher-order fonksiyonlar
- JavaScript kursu
- İleri seviye
- Ders 58/100
- 5 dk
Fonksiyonu argüman alan veya döndüren higher-order fonksiyonları öğrenirsin.
Higher-order fonksiyonlar
Bir higher-order fonksiyon, ya bir fonksiyonu parametre olarak alır ya da bir fonksiyon döndürür. JavaScript'te map, filter ve reduce birer higher-order fonksiyondur çünkü bir callback fonksiyonu alırlar.
[1, 2, 3].map(x => x * 2);Burada map, x => x * 2 fonksiyonunu alır ve her elemana uygular. Higher-order fonksiyonlar kodu kısa ve yeniden kullanılabilir yapar; iş mantığını küçük fonksiyonlara bölmeyi sağlar.
Fonksiyon döndüren fonksiyonlar
Bir higher-order fonksiyon ayrıca fonksiyon döndürebilir. Bu, bir fabrika kurmak gibidir: dış fonksiyon bir ayar alır, iç fonksiyon o ayara göre iş yapar.
function createMultiplier(factor) {
return n => n * factor;
}
const double = createMultiplier(2);Burada createMultiplier(2) çağrısı double adında yeni bir fonksiyon üretir. factor closure'da saklanır ve her çağrıda kullanılır. Bu, önceden yapılandırılmış fonksiyonlar yaratmanın güçlü bir yoludur.
Uygulama createMultiplier fabrikasını yaz
createMultiplier adında higher-order bir fonksiyon yaz. factor parametresi alır ve n => n * factor döndüren bir fonksiyon döndürür. Sonra const double = createMultiplier(2); ve console.log(double(5)); çağrısı yap.
Başlangıç kodu
// createMultiplier higher-order fonksiyonunu yaz
// factor alır, n => n * factor döndürür
// double adında değişken oluştur ve double(5) sonucunu yazdırÖrnek çözüm
function createMultiplier(factor) {
return n => n * factor;
}
const double = createMultiplier(2);
console.log(double(5));Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hangisi higher-order fonksiyondur?
- [1, 2].filter(x => x > 1) Doğru cevap
- 'abc'.toUpperCase()
- Math.max(1, 2, 3)
- Number('42')
Açıklama: filter bir fonksiyon alır; bu yüzden higher-order'dır.
2 Prefix fabrikasını çağır
const withPrefix = prefix => text => prefix + text;
const greet = withPrefix(____);
const withPrefix = prefix => text => prefix + text;
const greet = withPrefix('Merhaba ');
Açıklama: withPrefix('Merhaba ') text => 'Merhaba ' + text fonksiyonunu döndürür.
3 Higher-order örneklerini eşleştir
| Kavram | Anlamı |
|---|---|
map |
fonksiyon alır |
withPrefix |
fonksiyon döndürür |
filter |
koşul fonksiyonu alır |