آموزش جامع توابع و پارامترها در جاوااسکریپت


🎯 اهداف یادگیری

  • آشنایی با مفهوم توابع در جاوااسکریپت
  • یادگیری نحوه تعریف و فراخوانی توابع
  • شناخت انواع پارامترها و آرگومان‌ها
  • آشنایی با توابع بازگشتی و توابع arrow

📌 توابع در جاوااسکریپت

توابع بلوک‌هایی از کد هستند که برای انجام یک کار خاص طراحی می‌شوند:

javascript
// تعریف تابع
function greet(name) {
return `سلام ${name}!`;
}
// فراخوانی تابع
let message = greet('علی'); // "سلام علی!"
console.log(message);

ویژگی‌های توابع:

  • قابل استفاده مجدد: می‌توان یک تابع را چندین بار فراخوانی کرد
  • پارامترپذیر: می‌تواند مقادیر مختلفی را به عنوان ورودی دریافت کند
  • مقدار بازگشتی: می‌تواند نتیجه را با دستور return برگرداند

📌 پارامترها و آرگومان‌ها

پارامترها متغیرهایی هستند که در تعریف تابع مشخص می‌شوند و آرگومان‌ها مقادیری هستند که به تابع ارسال می‌شوند:

javascript
// پارامترهای تابع (a و b)
function sum(a, b) {
return a + b;
}
// آرگومان‌های تابع (5 و 3)
let result = sum(5, 3); // 8

انواع پارامترها:

  • پارامترهای معمولی: مانند مثال بالا (a و b)
  • پارامترهای پیش‌فرض: مقدار اولیه دارند
  • پارامترهای باقی‌مانده (rest): برای تعداد متغیر آرگومان‌ها
  • پارامترهای destructured: برای گرفتن مقادیر از اشیا یا آرایه‌ها

📌 توابع Arrow (فلشی)

توابع Arrow روشی مختصر برای نوشتن توابع در ES6 هستند:

javascript
// تابع معمولی
function multiply(a, b) {
return a * b;
}
// معادل تابع Arrow
const multiply = (a, b) => a * b;
// برای توابع یک خطی می‌توان از فرم مختصر استفاده کرد
const square = x => x * x;

مزایای توابع Arrow:

  • کوتاه‌تر: نیاز به نوشتن کلمات کلیدی function و return نیست
  • this متفاوت: مقدار this را از محیط اطراف به ارث می‌برند
  • بهترین برای توابع یک خطی: خوانایی بهتری دارند

📌 توابع بازگشتی

توابع بازگشتی توابعی هستند که خودشان را فراخوانی می‌کنند:

javascript
// محاسبه فاکتوریل به صورت بازگشتی
function factorial(n) {
if (n === 0) {
return 1;
}
return n * factorial(n - 1);
}
console.log(factorial(5)); // 120

نکات توابع بازگشتی:

  • شرط توقف: باید یک حالت پایه داشته باشد تا از حلقه بی‌نهایت جلوگیری کند
  • حافظه: ممکن است از حافظه بیشتری نسبت به حلقه‌ها استفاده کند
  • خوانایی: برای برخی مسائل (مانند درختان) خوانایی بهتری دارند

📌 تمرین عملی

تابعی بنویسید که یک عدد دریافت کند و تشخیص دهد آیا عدد اول است یا خیر:

javascript
function isPrime(num) {
// کد خود را اینجا بنویسید
}

راهنمای تمرین:

  1. اعداد کمتر از 2 اول نیستند
  2. برای اعداد بزرگتر از 2، بررسی کنید که بر هیچ عددی به جز خودش و 1 بخشپذیر نباشد
  3. می‌توانید تا جذر عدد بررسی کنید (برای بهینه‌سازی)
  4. مقدار true یا false برگردانید

📌 قدم بعدی

در درس بعدی با حوزه بندی در جاوااسکریپت آشنا خواهیم شد!