Fonksiyon çağrısında spread
Bir dizinin elemanlarını fonksiyon argümanları olarak yaymayı öğrenirsin.
Çağrıda spread
Spread bir fonksiyon çağrısında da kullanılır. Math.max(...scores) yazdığında scores dizisinin her elemanı ayrı bir argüman gibi geçer; yani Math.max(85, 92, 78) ile aynı sonucu verir.
Bu özellikle Math.max, Math.min veya kendi yazdığın çok parametreli fonksiyonlarda işe yarar. Diziyi tek bir argüman olarak vermek yerine elemanlarını açıp geçirirsin.
Eski yöntem: apply
Spread çıkmadan önce bir diziyi argüman olarak geçirmek için apply kullanılırdı: Math.max.apply(null, scores). Bu çalışır ama okunması zordur; null geçmek this bağlamını yok saymak için bir hiledir.
Modern kodda Math.max(...scores) tercih edilir. Aynı sonucu verir, daha kısadır ve niyeti net biçimde gösterir. Eski kodlarda apply gördüğünde artık spread ile değiştirilebileceğini bil.
Uygulama Faturayı spread ile hesapla
calculateTotal(price, tax, discount) adında bir fonksiyon yaz. Gövdesinde price + tax - discount işlemini döndür. invoice adında bir dizi oluştur (örneğin [100, 18, 10]). Spread ile invoice elemanlarını calculateTotal'e argüman olarak geçir ve sonucu console.log ile yazdır.
Örnek çözümü göster
function calculateTotal(price, tax, discount) {
return price + tax - discount;
}
const invoice = [100, 18, 10];
console.log(calculateTotal(...invoice));
Kendini test et
-
`Math.max(...nums)` ne yapar?
const nums = [85, 92, 78]; const top = Math.max(...nums);- `nums` dizisinin kendisini tek argüman olarak geçirir
- `nums`'un her elemanını ayrı argüman olarak geçirir
- `nums.length` değerini geçirir
- `nums` dizisini alfabetik sıralar
Cevabı göster
`nums`'un her elemanını ayrı argüman olarak geçirir — Doğru. Spread diziyi açar; her eleman ayrı argüman olur.
-
Çağrı yöntemlerini eşleştir
- Math.max(...nums)
- En büyük değeri bul
- fn.apply(null, arr)
- Eski yöntem
- ...arr (çağrıda)
- Diziyi argümanlara aç
-
En yüksek skoru bul
const scores = [85, 92, 78]; const highest = Math.max(____); console.log(highest);Cevabı göster
const scores = [85, 92, 78]; const highest = Math.max(...scores); console.log(highest);