بازگشت به دوره

آشنایی با Arrow Functions

در استاندارد ES6 روش جدیدی برای تعریف توابع به وجود آمده است که معمولاً برای تعریف توابع ساده به کار برده می‌شود. این نوع توابع را Arrow Function (یا تابع پیکانی) می‌نامند. دلیل این نامگذاری، استفاده از عملگر "<=" یا Arrow (پیکان) در تعریف این نوع توابع است. این توابع معمولاً در یک خط تعریف می‌شوند. در قطعه کد زیر تابعی را می‌بینید که یک آرگومان ورودی را دریافت کرده و مربع آن (توان دوم) را بازمی‌گرداند.


const square = x => x * x;

این تابع معادل دو تابع زیر است که با روش‌های Function Declaration و Function Expression تعریف شده اند.


function square(x){
	return x * x;
}

یا

const square = function(x){
	return x * x;
}

همانطور که مشاهده می‌کنید روش Arrow Function بسیار ساده‌تر و کوتاه‌تر از دو روش دیگر است. البته این روش فقط برای تعریف توابع ساده‌ای که یک عمل ساده را انجام می‌دهند به کار برده می‌شود.

در این روش از عملگر "<=" برای تعریف تابع استفاده می‌شود که در سمت چپ این عملگر پارامترهای ورودی تابع قرار می‌گیرند (در مثال فوق x)، و در سمت راست این عملگر مقدار خروجی تابع (بدون کلمه‌ی کلیدی return) قرار می‌گیرد. یعنی نتیجه‌ی دستور سمت راست به صورت خودکار به عنوان خروجی تابع بازگردانده می‌شود.

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


const sum = (x , y) => x + y;
sum(4 , 7);
← 11

در صورتی که تابع هیچ پارامتر ورودی نداشته باشد، باید یک جفت پرانتز خالی در سمت چپ عملگر Arrow قرار داده شود.


const message = () => "Hello World!";
message();
← "Hello World!"

همچنین می‌توان در سمت راست عملگر Arrow بیش از یک دستور را قرار داد. اما در این صورت باید مجموعه‌ی دستورات را در آکلاد باز و بسته (بلاک کد) قرار دهیم. ضمناً در این حالت باید مقدار خروجی تابع را به صورت صریح با دستور return مشخص کنیم. مثلاً در تابع زیر حقوق یک کارمند به عنوان ورودی دریافت می‌شود و میزان مالیات آن بر اساس یک فرمول مشخص محاسبه شده و بازگردانده می‌شود.


const tax = (salary) => {
	let taxable = salary - 8000;
	let amount = 0.25 * taxable;
	return amount;
}
tax(10000);
← 500

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