JavaScript fonksiyonları, fonksiyonun parametre listesinin bunları açıkça tanımlayıp tanımlamamasına bakılmaksızın, fonksiyona geçen tüm argümanları tutan arguments
adlı özel bir nesne sağlar. Ancak, arguments
gerçek bir dizi değildir; dizi benzeridir, bir length
özelliğine sahiptir ve sayısal indeksler aracılığıyla eleman erişimine izin verir, ancak map
, filter
ve reduce
gibi standart dizi yöntemlerinden yoksundur. Bu, daha kolay manipülasyon için arguments
‘ı standart bir JavaScript dizisine dönüştürmeyi sıklıkla gerekli kılar.
İçerik Tablosu
arguments
Nesnesini Anlamak- Geriye Kalan Parametreleri Kullanma (
...
) Array.from()
Kullanımı- Dizi Literallerini Kullanma
- En İyi Yöntemi Seçme
arguments
Nesnesini Anlamak
arguments
nesnesi, herhangi bir JavaScript fonksiyonunun içinde kullanılabilir. Dizi benzeridir, yani elemanlarına köşeli parantez gösterimi (örneğin, arguments[0]
) kullanarak erişebilirsiniz ve argüman sayısını gösteren bir length
özelliğine sahiptir. Ancak, gerçek bir dizi değildir ve Array.prototype
‘tan kalıtım almaz, yerleşik dizi yöntemlerinin kullanımını engeller.
function myFunc() {
console.log(arguments); // Arguments nesnesi çıktılar
console.log(arguments.length); // Argüman sayısını çıktılar
}
myFunc(1, 2, 3);
Geriye Kalan Parametreleri Kullanma (...
)
En modern ve verimli yaklaşım, geriye kalan parametreleri kullanmaktır. ES6’da tanıtılan geriye kalan parametreler, belirsiz sayıda argümanı gerçek bir diziye toplamanıza olanak tanır.
function myFunc(...args) {
console.log(args); // args gerçek bir dizi!
console.log(args.map(x => x * 2)); // Dizi yöntemlerini kullanma
}
myFunc(1, 2, 3);
Bu yöntem özlü, okunabilir ve oldukça performanslıdır. Modern JavaScript’te argümanları diziye dönüştürmek için önerilen yaklaşımdır.
Array.from()
Kullanımı
Array.from()
yöntemi, dizi benzeri veya yineleyici bir nesneden yeni bir dizi oluşturur ve bu da arguments
nesnesini dönüştürmek için idealdir.
function myFunc() {
const argsArray = Array.from(arguments);
console.log(argsArray);
console.log(argsArray.filter(x => x > 1)); // Dizi yöntemlerini kullanma
}
myFunc(1, 2, 3);
Array.from()
, geriye kalan parametreleri desteklemeyen eski tarayıcılarda iyi uyumluluk sunar.
Dizi Literallerini Kullanma
Önceki yöntemlerden daha az verimli ve daha az okunabilir olsa da, bir dizi literal ve bir döngü kullanarak manuel olarak bir dizi oluşturabilirsiniz.
function myFunc() {
const argsArray = [];
for (let i = 0; i < arguments.length; i++) {
argsArray.push(arguments[i]);
}
console.log(argsArray);
}
myFunc(1, 2, 3);
Bu yöntem, özellikle çok sayıda argümanla uğraşırken, ayrıntılılığı ve düşük performansı nedeniyle genellikle önerilmez.
En İyi Yöntemi Seçme
Modern JavaScript geliştirme için, geriye kalan parametreleri (...args
) kullanmak, argümanları diziye dönüştürmek için tercih edilen ve en verimli yöntemdir. Özlü, okunabilir ve modern JavaScript özelliklerini kullanır. Array.from(arguments)
, daha geniş tarayıcı uyumluluğu için uygun bir yedek sağlar. Diğer iki yöntemi kullanmayı engelleyen çok özel bir kısıtlama yoksa dizi literallerini kullanmaktan kaçının.