آموزش جامع توابع و پارامترها در جاوااسکریپت
🎯 اهداف یادگیری
- آشنایی با مفهوم توابع در جاوااسکریپت
- یادگیری نحوه تعریف و فراخوانی توابع
- شناخت انواع پارامترها و آرگومانها
- آشنایی با توابع بازگشتی و توابع 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;}// معادل تابع Arrowconst 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) { // کد خود را اینجا بنویسید}
راهنمای تمرین:
- اعداد کمتر از 2 اول نیستند
- برای اعداد بزرگتر از 2، بررسی کنید که بر هیچ عددی به جز خودش و 1 بخشپذیر نباشد
- میتوانید تا جذر عدد بررسی کنید (برای بهینهسازی)
- مقدار true یا false برگردانید
📌 قدم بعدی
در درس بعدی با حوزه بندی در جاوااسکریپت آشنا خواهیم شد!