آموزش function در جاوا اسکریپت

آموزش function در جاوا اسکریپت
آکادمی آی تی
آکادمی آی تی
dots

آموزش function در جاوا اسکریپت

زمان مورد نیاز برای مطالعه 5 دقیقه

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

دپارتمان ‌ها: آموزش طراحی سایت
1400/11/03
4,308 بازدید

                      

 

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

 

تابع

به طور کلی، یک تابع یک "زیربرنامه" است که می تواند توسط کد خارجی (یا داخلی در صورت بازگشت) به تابع فراخوانی شود. مانند خود برنامه، یک تابع از مجموعه دستوراتی به نام "بدنه تابع" تشکیل شده است. مقادیر را می توان به یک تابع ارسال کرد و تابع مقداری را برمی گرداند.

در جاوا اسکریپت، توابع اشیاء درجه یک هستند، زیرا می توانند مانند هر شی دیگری دارای ویژگی ها ومتدهایی باشند. چیزی که آن ها را از سایر اشیا متمایز می کند؛ این است که می توان توابع را فراخوانی کرد. به طور خلاصه، آنها function objects(اشیا تابع) هستند.

برای بازگرداندن مقداری غیر از مقدار پیش فرض، یک تابع باید یک عبارت بازگشتی داشته باشد که مقدار آن را مشخص کند. یک تابع بدون دستور بازگشت یک مقدار پیش فرض را برمی گرداند.


پارامترهای فراخوانی تابع، آرگومان های تابع هستند. آرگومان ها ممکن است با مقدار (در مورد مقادیر اولیه) یا با مرجع (در مورد اشیا) ارسال شوند. این بدان معنی است که اگر یک تابع، یک پارامتر نوع اولیه را مجددا اختصاص دهد؛ مقدار خارج از تابع تغییر نخواهد کرد. اما در مورد یک پارامتر نوع شی، اگر دوباره تخصیص داده شود یا جهش یافته باشد، تغییر خارج از تابع، بر روی function تأثیر خواهد گذاشت. مثال زیر را ببینید:

/* Declare the function 'myFunc' */
function myFunc(theObject) {
theObject.brand = "Toyota";
}
/*
* Declare variable 'mycar';
* create and initialize a new Object;
* assign reference to it to 'mycar'
*/
var mycar = {
brand: "Honda",
model: "Accord",
year: 1998
};
/* Logs 'Honda' */
console.log(mycar.brand);
/* Pass object reference to the function */
myFunc(mycar);
/*
* Logs 'Toyota' as the value of the 'brand' property
* of the object, as changed to by the function.
*/
console.log(mycar.brand);

 

عبارت تابع (function expression)

یک عبارت تابع، شبیه به یک اعلان تابع است و دارای همان ترکیب است. یک عبارت تابع ممکن است بخشی از یک عبارت بزرگتر باشد. به عنوان مثال می توان function "name" را تعریف کرد. عبارت تابع، در ابتدای دامنه قرار نمی گیرد، بنابراین نمی توان آن ها را قبل از ظاهر شدن در کد استفاده کرد.

function [name]([param[, param[, ... param]]]) {
statements
}

 

name
نام تابع را می توان حذف کرد، در این صورت تابع به عنوان یک تابع ناشناس شناخته می¬شود.

param
نام یک آرگومان برای ارسال به تابع.

statements
عباراتی که بدنه تابع را تشکیل می دهند.

مثالی از یک عبارت تابع ناشناس(از نام استفاده نمی شود):

var myFunction = function() {
statements
}

 

همچنین می توان نامی را ارائه کرد تا یک عبارت تابع نامگذاری شده، ایجاد شود:

var myFunction = function namedFunction(){
statements
}

 

یکی از مزایای ایجاد یک عبارت تابع نامگذاری شده، این است که در صورت مواجه شدن با خطا، stack trace حاوی نام تابع خواهد بود و پیدا کردن منشا خطا را آسان تر می کند. همانطور که می بینیم، هر دو مثال با کلمه کلیدی تابع شروع نمی شوند. عبارات مربوط به توابعی که با تابع شروع نمی شوند، عبارت های تابع هستند.

 

IIFE (بیان تابع فراخوانی فوری)

هنگامی که توابع فقط یک بار استفاده می شوند، یک الگوی رایج IIFE (بیان تابع فراخوانی فوری) است.

(function() {
statements
})();

 

IIFE عبارات

تابعی هستند که به محض اعلام تابع، فراخوانی می شوند.


اعلان تابع مولد (function statement)

یک دستور ویژه برای اعلان تابع مولد وجود دارد. مانند کد زیر:
function* name([param[, param[, ... param]]]) {
statements
}

 

name
نام تابع

param
نام یک آرگومان برای ارسال به تابع.

statements
عباراتی که بدنه تابع را تشکیل می دهند.

 

عبارت تابع مولد (function expression)

یک عبارت تابع مولد شبیه به یک اعلان تابع مولد است و دارای همان ترکیب است.

function* [name]([param[, param[, ... param]]]) {
statements
}

 

name
نام تابع را می توان حذف کرد، در این صورت تابع به عنوان یک تابع ناشناس شناخته می شود.

param
نام یک آرگومان برای ارسال به تابع.

statements
عباراتی که بدنه تابع را تشکیل می دهند.

 

عبارت تابع فلش (=>)

یک عبارت تابع فلش ترکیب کوتاه تری دارد و همانطور که از نامش پیداست با فلش نشان داده می شود.

([param[, param]]) => {
statements
}

 

param => expression


param
آرگومان های صفر باید با () نشان داده شوند. فقط برای یک آرگومان، پرانتز لازم نیست. مانند (=>1)

statements
چند عبارت باید در داخل پرانتز قرار داده شوند. یک عبارت واحد، نیازی به براکت ندارد.

 

سازنده تابع

استفاده از سازنده Function برای ایجاد توابع توصیه نمی شود؛ زیرا به بدنه تابع به عنوان یک رشته نیاز دارد که ممکن است از برخی بهینه سازی های موتور JS جلوگیری کند و همچنین می تواند مشکلات دیگری ایجاد کند.

مانند سایر اشیا، اشیا تابع را می توان با استفاده از عملگر جدید ایجاد کرد:

new Function (arg1, arg2, ... argN, functionBody)

 

سازنده تابع مولد

سازنده تابع مولد (FunctionGenerator) یک شی سراسری نیست، اما می تواند از نمونه تابع مولد به دست آید. استفاده از سازنده Generator Function برای ایجاد توابع توصیه نمی شود زیرا به بدنه تابع به عنوان یک رشته نیاز دارد؛ که ممکن است از برخی بهینه سازی های موتور JS جلوگیری کند و همچنین می تواند مشکلات دیگری ایجاد کند.

مانند تمام اشیا دیگر، اشیا Generator Function را می توان با استفاده از عملگر جدید ایجاد کرد: 

new GeneratorFunction (arg1, arg2, ... argN, functionBody)

 

پارامترهای تابع

پارامترهای تابع، شامل پارامترهای پیش فرض و پارامترهای استراحت است.

 

پارامترهای پیش فرض

پارامترهای تابع پیش‌فرض اجازه می‌دهند تا پارامترهای رسمی با مقادیر پیش‌فرض مقداردهی اولیه شوند.

 

پارامترهای استراحت

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

 

تعریف انواع arguments

arguments: یک شی آرایه مانند حاوی آرگومان های ارسال شده به تابع در حال اجرا.

arguments.callee: تابع در حال اجرای فعلی.

arguments.caller: تابعی که تابع در حال اجرای فعلی را فراخوانی می کند.

arguments.length: تعداد آرگومان های ارسال شده به تابع.

 

تعریف روش های توابع

توابع گیرنده و تنظیم کننده (Getter and setter functions): می‌توانید دریافت‌کننده‌ها و تنظیم‌کننده‌ها را روی هر شی استاندارد داخلی یا شی تعریف شده توسط کاربر که از افزودن ویژگی‌های جدید پشتیبانی می‌کند، تعریف کنید.

get: ویژگی شی را به تابعی متصل می کند؛ که با جستجوی آن، ویژگی فراخوانی می شود.

set: ویژگی شی را به یک تابع متصل می کند تا زمانی که تلاش برای تنظیم آن ویژگی وجود دارد، فراخوانی شود.

 

همچنین بخوانید : آموزش dom در جاوا اسکریپت

 

نتیجه

با تشکر از همراهی شما با "آموزش function  در جاوا اسکریپت"، همونطور که تا الان متوجه موضوع شده اید؛ این بحث بسیار گسترده است و تک تک عنوان هایی که در این مقاله ذکر شده، دنیایی از مطالب و مقالات است؛ با این وجود سعی ما این بوده تا مطالب اصلی و مهم در مورد توابع را با ذکر مثال بیان کنیم. و امیدواریم مورد استفاده شما عزیزان قرار گرفته باشد. شما می توانید با ارسال نظرات خود ما را در تهیه مطالب آموزشی یاری کنید و مطالب مورد نظرتان را برای آموزش های بعدی درخواست کنید.