js Rest Parameters

در جاوااسکریپت، پارامترهای (...)Rest برای دریافت تعداد نامشخصی از آرگومان‌ها در تابع استفاده می‌شوند.
این ویژگی کمک می‌کند آرگومان‌های اضافی را به‌صورت یک آرایه در اختیار داشته باشیم.

🔹 استفاده‌ی ساده از Rest

با قرار دادن ... قبل از نام پارامتر، همه‌ی آرگومان‌های باقی‌مانده در یک آرایه جمع می‌شوند:

function sum(...numbers) {
  console.log(numbers);
}

sum(1, 2, 3, 4);

📌 خروجی:

[1, 2, 3, 4]

🔹 کاربرد عملی: جمع تمام اعداد ورودی

function sum(...nums) {
  let total = 0;
  for (let n of nums) {
    total += n;
  }
  return total;
}

console.log(sum(10, 20, 30));

📌 خروجی:

60

🔹 ترکیب پارامترهای معمولی با Rest

می‌توان پارامترهای مشخص را در ابتدا نوشت و بقیه را با Rest گرفت:

function info(name, ...skills) {
  console.log("Name:", name);
  console.log("Skills:", skills);
}

info("Ali", "HTML", "CSS", "JavaScript");

📌 خروجی:

Name: Ali
Skills: ["HTML", "CSS", "JavaScript"]

🔹 تفاوت Rest و Spread

هر دو از ... استفاده می‌کنند، اما تفاوتشان در کاربرد است:

  • Rest برای جمع‌آوری آرگومان‌ها به‌صورت آرایه در تعریف تابع استفاده می‌شود.

  • Spread برای گسترش آرایه یا شیء در زمان استفاده کاربرد دارد.

نکته:

  • فقط یک پارامتر Rest در تابع مجاز است.

  • باید آخرین پارامتر در لیست پارامترها باشد.

  • ترکیب آن با آرایه‌ها و توابع، کدنویسی را ساده‌تر و تمیزتر می‌کند.