در جاوااسکریپت، دو ساختار خاص برای نوشتن پارامترها داریم: پارامترهای پیشفرض (Default parameters) و پارامترهای باقیمانده (Rest parameters).
به صورت پیشفرض، پارامترهای ورودی توابع در جاوااسکریپت مقدار undefined دارند. اما در خیلی از مواقع مفید است که یک مقدار پیشفرضِ متفاوت برای آنها تنظیم کنیم. این دقیقاً همان کاری است که پارامترهای پیشفرض انجام میدهند.
در گذشته، استراتژی کلی برای تعیین مقادیر پیشفرض این بود که مقدار پارامترها را داخل بدنه تابع چک میکردند و اگر undefined بودند، یک مقدار مشخص به آنها میدادند.
در مثال زیر، اگر مقداری برای b وارد نشود، موقع محاسبهی a * b مقدار آن undefined خواهد بود و صدا زدن تابع multiply به طور معمول باید NaN برمیگرداند. با این حال، خط دوم در این مثال جلوی این اتفاق را میگیرد:
function multiply(a, b) {
b = typeof b !== "undefined" ? b : 1;
return a * b;
}
console.log(multiply(5)); // 5
با آمدن پارامترهای پیشفرض، دیگر به این بررسی دستی در بدنه تابع نیازی نیست. شما میتوانید خیلی راحت عدد 1 را به عنوان مقدار پیشفرضِ b در همان بخش ورودی (هدر) تابع بنویسید:
function multiply(a, b = 1) {
return a * b;
}
console.log(multiply(5)); // 5
ساختار پارامترهای باقیمانده به ما این امکان را میدهد که تعداد نامشخصی از آرگومانهای ورودی را به شکل یک آرایه جمعآوری کنیم.
در مثال زیر، تابع multiply از پارامترهای باقیمانده استفاده میکند تا آرگومانهای ورودی را از دومی تا انتها جمع کند. سپس تابع تمام این مقادیر را در آرگومان اول (یعنی multiplier) ضرب میکند:
function multiply(multiplier, ...theArgs) {
return theArgs.map((x) => multiplier * x);
}
const arr = multiply(2, 1, 2, 3);
console.log(arr); // [2, 4, 6]
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://developer.mozilla.org/en-US/docs/Web/JavaScript