در حال بارگذاری...

توابع پیکانی

تا اینجا یاد گرفتید تابع را اعلان کنید، آرگومان بدهید و با return جواب را بیرون بفرستید. خیلی از کمک‌کارهای روزمره کوتاه‌اند و نوشتن کاملِ function سنگین به‌نظر می‌رسد. JavaScript شکل فشرده‌تری هم دارد: تابع پیکانی با نشانهٔ =>.

تابع پیکانی یعنی چه

هنوز همان تابع است: ورودی می‌گیرد، بدنه را اجرا می‌کند، می‌تواند نتیجه برگرداند. فقط شکل عوض می‌شود. معمولاً با const اسم می‌گذارید، پارامترها را می‌نویسید، => می‌آید، بعد یا یک عبارت کوتاه یا یک بلوک { }.

کنار اعلان کلاسیک

📊 تابع کلاسیک در برابر پیکانی

مفهوم شکل کلاسیک شکل پیکانی
کمک‌کار نام‌دار function add(a, b) { return a + b; } const add = (a, b) => a + b;
یک عبارت برگشتی return a + b; داخل { } عبارت بعد از => خودش برمی‌گردد
چند دستور { } به‌همراه return همان قاعده: { } و return
یک پارامتر (name) name => ... (پرانتز اختیاری)
بدون پارامتر function hi() { ... } const hi = () => ... — () خالی لازم است
جای تعریف اعلان یا عبارت تقریباً همیشه داخل متغیر

هر دو سبک می‌توانند عدد و رشته برگردانند. وقتی کمک‌کار کوچک است و اسم روشن با const می‌خواهید، پیکان راحت‌تر است. وقتی می‌خواهید یک بلوک نام‌دار برجسته باشد، function کلاسیک هم کاملاً درست است.

بدنهٔ عبارتی (برگشت خودکار)

javascript
const double = (n) => n * 2;
let answer = double(5);
console.log(answer);

عبارتِ بعد از پیکان خودش برمی‌گردد

اگر بعد از => فقط یک عبارت باشد، همان مقدار خودبه‌خود به صدازننده می‌رسد — نه { } لازم است نه کلمهٔ return. اینجا double(5) می‌شود ۱۰. آرگومان را عوض کنید؛ حاصل ضرب عوض می‌شود.

بدنهٔ بلوکی با return

javascript
const label = (score) => {
if (score < 0) {
return "invalid";
}
return "ok";
};
console.log(label(-1));
console.log(label(8));

با آکولاد خودتان return بنویسید

وقتی بدنه داخل { } است، JavaScript آخرین خط را خودکار برنمی‌گرداند. مثل تابع کلاسیک باید return بنویسید. خروج زودهنگام و منطق چندمرحله‌ای همین‌طور خوانا می‌ماند.

یک پارامتر بدون پرانتز

javascript
const greet = name => "Hello, " + name;
let line = greet("Sara");
console.log(line);

یک پارامتر: پرانتز را می‌شود برداشت

اگر دقیقاً یک پارامتر دارید، می‌توانید name => ... بنویسید بدون ( ). محل صدا عوض نمی‌شود: greet("Sara"). با دو پارامتر یا بیشتر، پرانتز بماند.

بدون پارامتر با پرانتز خالی

javascript
const hello = () => "Hello";
console.log(hello());

صفر پارامتر هم () می‌خواهد

وقتی ورودی ندارید، قبل از => پرانتز خالی بگذارید. حذفش خطای نحو است. صدا همچنان hello() است — آن جفت خالی یعنی «پارامتری نیست».

ذخیره، صدا، استفادهٔ دوباره

javascript
const add = (a, b) => a + b;
let total = add(3, 4);
console.log(total);
console.log(add(10, 2));

اسم بگذارید، بعد صدا بزنید

const add = (a, b) => a + b پیکان را زیر نام add نگه می‌دارد. صدا مثل هر تابعی است: add(3, 4) مقدار ۷ می‌دهد. یک تعریف، دو صدا — بدنه را دوباره نمی‌نویسید.

پیکان را روی صفحه ببرید

با پیکان یک رشتهٔ خوش‌آمد بسازید، صدا بزنید، نتیجه را در پاراگراف بنویسید — همان الگوی صفحه، فقط شکل تابع کوتاه‌تر.

صدا روی صفحه با پیکان

html
<!DOCTYPE html>
<html>
<head>
<title>arrow — page</title>
</head>
<body>
<p id="msg">…</p>
<script>
const welcome = guest => "Hello, " + guest;
let box = document.getElementById("msg");
box.textContent = welcome("Omar");
</script>
</body>
</html>

پاراگراف Hello, Omar را نشان می‌دهد. پیکان رشته را برگرداند؛ خط بعد آن را روی صفحه گذاشت. فقط آرگومان را عوض کنید، تازه کنید، خط تازه را بخوانید. جلسهٔ بعد محدودهٔ دید است — کجا آن اسم‌ها دیده می‌شوند.

تمرین

  1. function triple(n) { return n * 3; } را به پیکانِ const با بدنهٔ عبارتی بازنویسی کنید.
  2. بنویسید const hi = name => "hi " + name و hi("Neda") را چاپ کنید.
  3. بنویسید const ping = () => "pong" و یک‌بار صدا بزنید.
  4. پیکانی با بلوک بنویسید که اگر n === 0 بود "zero" وگرنه "nonzero" برگرداند.
  5. بعد از const add = (a, b) => a + b مقدار add(6, 1) را بگیرید و ببینید ۷ است.
  6. در نمونهٔ HTML فقط رشتهٔ آرگومان را عوض کنید، تازه کنید، پاراگراف را بخوانید.

اشتباه‌های رایج

  • بعد از => آکولاد باز کردن و فراموش کردن return — صدا می‌شود undefined
  • وقتی هیچ پارامتری نیست، حذف کردن ()
  • قاطی کردن => با عملگر مقایسه — پیکان نحوِ تابع است، نه «بزرگ‌تر از»
  • انتظار درس کامل دربارهٔ this در همین صفحه — تفاوت اتصال مال جلسهٔ بعدی‌تر است؛ اینجا شکل فشرده است
  • فکر کردن که پیکان دانش return را بی‌نیاز می‌کند — عبارت همچنان برمی‌گردد؛ بلوک همچنان return می‌خواهد

خلاصه

  • تابع پیکانی با => نوشته می‌شود و معمولاً در const می‌ماند
  • عبارتِ برهنه بعد از => خودش برمی‌گردد
  • بدنهٔ { } به return صریح نیاز دارد
  • یک پارامتر می‌تواند بدون ( ) باشد؛ صفر پارامتر () خالی می‌خواهد
  • صدا زدن با اسم، مثل هر تابع دیگر
  • به‌روزرسانی صفحه می‌تواند از رشتهٔ برگشتیِ پیکان استفاده کند
  • بعدی: محدودهٔ دید — اسم‌ها کجا زنده‌اند

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
8
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود