فصل ۹: توابع (Functions) در جاوااسکریپت

توابع یعنی چی؟
تابع یه تیکه کد هست که یه کار مشخص رو انجام میده و بعداً هر جا که بخوای میتونی اون رو صدا بزنی. این کار باعث میشه کدت منظمتر و قابل استفاده مجدد باشه.
مثلا تصور کن میخوای جمع دو عدد رو بارها انجام بدی، بهجای اینکه هر بار این کار رو بنویسی، یه تابع درست میکنی:
تعریف تابع (Function Declaration)
سادهترین روش ساخت تابع مثل زیر هست:
function sayHello() {
console.log("سلام دوست من!");
}
برای اجرای این تابع:
sayHello(); // خروجی: سلام دوست من!
تابع با پارامتر (Parameters) و مقدار بازگشتی (return)
توابع میتونن ورودی بگیرن و مقدار هم برگردونن. مثلا:
function sum(a, b) {
return a + b;
}
حالا میتونیم این تابع رو با دو عدد مختلف صدا بزنیم:
console.log(sum(4, 5)); // خروجی: 9
console.log(sum(10, 80)); // خروجی: 90
Function Expression (تعبیر تابع)
میتونی یه تابع رو توی یه متغیر هم ذخیره کنی:
const greet = function(name) {
console.log("سلام " + name + "!");
}
greet("نیما"); // خروجی: سلام نیما!
Arrow Function (تابع پیکانی)
یه روش جمع و جورتر و مدرنتر برای ساخت تابع:
const multiply = (x, y) => {
return x * y;
}
console.log(multiply(2, 3)); // خروجی: 6
اگر فقط یه خط کد داری و مقدار رو return میکنی:
const double = num => num * 2;
console.log(double(7)); // خروجی: 14
اسکوپ (Scope) و هوایستینگ (Hoisting)
اسکوپ:
محدودهای که یه متغیر یا تابع میتونه داخلش دیده بشه.
- متغیر let و const فقط توی بلوک خودشون قابل دسترسی هستن
- تابعهایی که با function تعریف شدن، تقریباً همه جا معتبرن (هوایستینگ)
Hoisting (هوایستینگ):
تابعهایی که با function declaration ساخته شدن، قبل از تعریف هم قابل فراخوانی هستن:
show(); // خروجی: من قبل از تعریف هم اجرا میشوم!
function show() {
console.log("من قبل از تعریف هم اجرا میشوم!");
}
فانکشن بازگشتی (Recursion)
تابعی که خودش رو دوباره صدا بزنه!
مثال با محاسبه فاکتوریل:
function factorial(n) {
if(n === 1) return 1;
return n * factorial(n - 1);
}
console.log(factorial(5)); // خروجی: 120
تمرینهای ساده
۱. تابعی بنویس که عددی رو به عنوان ورودی بگیره و مربع اون رو برگردونه.
۲. تابعی بنویس که دو رشته بگیره و به هم بچسبونه و چاپ کنه.
جمعبندی
- تابع یه تکه کد تکرارپذیر و سازمانیافته است.
- ورودی، خروجی، return و تعریفهای مختلفش رو دیدی.
- اسکوپ و هوایستینگ، و حتی فانکشن بازگشتی رو یاد گرفتی.