جدول محتوایی
تابع جاوا اسکریپت
دو راه برای ایجاد تابع در جاوا اسکریپت وجود دارد: عبارات تابع و اعلان تابع. در این مقاله، در مورد زمان استفاده از عبارات تابع در مقابل اعلان تابع بحث خواهیم کرد و تفاوت بین آنها را توضیح خواهیم داد.
اعلان های تابع جاوا اسکریپت برای خیلی وقت است که مورد استفاده قرار میگیرند، اما عبارات تابع به تدریج فراگیر شده اند. بسیاری از توسعه دهندگان مطمئن نیستند که چه زمانی از کدام استفاده کنند. بنابراین در نهایت سر یک دوراهی قرار میگیرند.
چند تفاوت کلیدی بین عبارات تابع و اعلان تابع وجود دارد. بیایید نگاهی دقیقتر به این تفاوتها بیندازیم و زمان استفاده از عبارات تابع در مقابل اعلانهای تابع در کد جاوا اسکریپت خود را بررسی کنیم.
function funcDeclaration() { return 'A function declaration'; } let funcExpression = function () { return 'A function expression'; }
اعلان های تابع چیست؟
اعلان تابع زمانی است که یک تابع را ایجاد می کنید و نامی برای آن می گذارید. زمانی که کلمه کلیدی function را می نویسید، نام تابع را به همراه نام تابع اعلام می کنید. مثلا:
function myFunction() { // do something };
همانطور که می بینید، نام تابع (myFunction) هنگام ایجاد تابع اعلام می شود. این بدان معناست که شما می توانید تابع را قبل از تعریف آن فراخوانی کنید.
در اینجا یک مثال از یک اعلان تابع را میبینید:
function add (a, b) { return a + b; };
عبارات تابع چیست؟
عبارات تابع زمانی هستند که یک تابع ایجاد می کنید و آن را به یک متغیر اختصاص می دهید. در این حالت تابع ناشناس است، به این معنی که نامی ندارد. مثلا:
let myFunction = function() { // do something };
همانطور که می بینید، تابع به متغیر myFunction اختصاص داده شده است. این بدان معناست که قبل از فراخوانی تابع باید آن را تعریف کنید.
در اینجا یک مثال از یک عبارت تابع است:
let add = function (a, b) { return a + b; };
تفاوت بین این دو نوع تابع در جاوا اسکریپت
- شما می توانید یک اعلان تابع را قبل از تعریف آن فراخوانی کنید، اما نمی توانید این کار را با یک عبارت تابع انجام دهید.
- با عبارات تابع، می توانید بلافاصله پس از تعریف یک تابع از آن استفاده کنید. با اعلان تابع، باید منتظر بمانید تا کل اسکریپت تجزیه شود.
- عبارات تابع را می توان به عنوان آرگومان برای تابع دیگری استفاده کرد، اما اعلان تابع نمی تواند.
- عبارات تابع می توانند ناشناس باشند، در حالی که اعلان های تابع نمی توانند.
درک محدوده تابع: تفاوت های اجرای کد در دو نوع تابع جاوا اسکریپت
مشابه دستور let، اعلان های تابع در اولویوت کدهای دیگر قرار می گیرند.
عبارات توابع، به تابع اجازه می دهد تا یک کپی از متغیرهای محلی را از محدوده ای که در آن تعریف شده اند حفظ کنند. به عبارتی متغیر های داخل در جای دیگری قابل استفاده نیست.
به طور معمول، می توانید از اعلان های تابع و عبارات تابع به جای هم استفاده کنید. اما مواقعی وجود دارد که عبارات تابع بدون نیاز به نام تابع موقت به درک سادهتر کد منجر میشوند.
نحوه انتخاب بین دو نوع تابع عبارت و اعلان
بنابراین، چه زمانی باید از عبارات تابع در مقابل اعلان تابع استفاده کنید؟
پاسخ این سوال به نیاز شما بستگی دارد. اگر به یک تابع منعطف تر یا تابعی نیاز دارید که کد های آن خارج از محدوده عمل نکند، یک عبارت تابع انتخاب بهتری است. اگر به یک تابع خوانا و قابل فهم تر نیاز دارید، از یک اعلان تابع استفاده کنید.
همانطور که مشاهده کردید، این دو سینتکس شبیه هم هستند. واضح ترین تفاوت این است که عبارات تابع ناشناس هستند، در حالی که اعلان های تابع یک نام دارند.
زمانی که نیاز به انجام کاری دارید که عبارات تابع نمی توانند انجام دهند، معمولاً از یک اعلان تابع استفاده کنید. اگر نیازی به انجام کاری ندارید که فقط با اعلان تابع قابل انجام باشد، بهتر است از یک عبارت تابع در کد جاوا اسکریپت استفاده کنید.
زمانی که نیاز به ایجاد یک تابع بازگشتی دارید، یا زمانی که نیاز به فراخوانی تابع قبل از تعریف آن دارید، از اعلان تابع استفاده کنید. و زمانی که نیازی به انجام هیچ یک از این کارها ندارید، از عبارت های تابع برای کد خود کنید.
مزایای توابع اعلانی
چند مزیت کلیدی برای استفاده از اعلان تابع وجود دارد.
- می تواند کد شما را خواناتر کند. اگر تابعی طولانی دارید، نام گذاری آن می تواند به شما در پیگیری کارهایی که انجام می دهد کمک کند.
- اعلان های توابع همیشه در دسترس هستند. به این معنی که قبل از اینکه در کد شما تعریف شوند، در دسترس هستند. اگر نیاز به استفاده از تابع قبل از تعریف شدن داشته باشید، این به شما کمک می کند.
مزایای عبارات تابع
عبارات تابع نیز چند مزیت دارند.
- آنها نسبت به اعلان تابع انعطاف پذیرتر هستند. شما می توانید عبارات تابع را ایجاد کنید و آنها را به متغیرهای مختلف اختصاص دهید. که می تواند مفید باشد زمانی که شما نیاز به استفاده از یک تابع در مکان های مختلف دارید.
- نمی توانید قبل از اینکه در کد خود تعریف شوند از آنها استفاده کنید. اگر می خواهید مطمئن شوید که یک تابع فقط پس از تعریف استفاده می شود، این نوع تابع به شما کمک می کند.
زمان انتخاب یک اعلان تابع در مقابل عبارت تابع
در بیشتر موارد، تشخیص اینکه کدام روش برای تعریف یک تابع برای نیازهای شما بهترین است، آسان است. این دستورالعملها به شما کمک میکند در بیشتر موقعیتها تصمیم سریع بگیرید.
زمان استفاده از از یک اعلان تابع :
- شما به یک تابع خوانا و قابل فهم تر نیاز دارید (مانند یک تابع طولانی، یا تابعی که باید در مکان های مختلف استفاده کنید).
- یک تابع ناشناس با نیازهای شما مطابقت ندارد.
- باید تابعی بسازید که بازگشتی باشد.
- قبل از اینکه تابع تعریف شود باید آن را فراخوانی کنید.
زمان استفاده از از یک عبارت تابع :
- شما به یک تابع انعطاف پذیرتر نیاز دارید.
- تابع فقط زمانی باید استفاده شود که تعریف شده باشد.
- تابع ناشناس است یا برای استفاده بعدی نیازی به نام ندارد.
- میخواهید با استفاده از تکنیکهایی مانند عبارات تابع فوری فراخوانی شده (IIFE) زمان اجرای تابع را کنترل کنید.
- می خواهید تابع را به عنوان آرگومان به تابع دیگری منتقل کنید.
عبارات تابع فراخوانی فوری (IIFE) در جاوا اسکریپت
IIFE ها به جلوگیری از تأثیرگذاری تابع ها و متغیرهای شما بر دامنه گلوبال جاوا اسکریپت کمک می کنند.
تمام ویژگیهای موجود در محدوده تابع ناشناس قرار میگیرند. این یک الگوی طراحی رایج است که برای جلوگیری از عوارض جانبی ناخواسته یا نامطلوب کد شما در جاهای دیگر استفاده می شود.
همچنین به عنوان یک الگوی ماژول حاوی بلوکهای کد در بخشهایی با قابلیت نگهداری آسان استفاده میشود. در ادامه نگاهی عمیقتر به این موارد در Demystifying JavaScript closures، callbacks و IIFE میاندازیم.
در اینجا یک مثال ساده از IIFE را میبینید:
(function () { // code in here }());
وقتی به عنوان یک ماژول استفاده می شود، می تواند منجر به قابلیت نگهداری آسان (easy-to-achieve) برای کد شما شود.
let myModule = (function () { let privateMethod = function () { console.log('A private method'); }, someMethod = function () { console.log('A public method'); }, anotherMethod = function () { console.log('Another public method'); }; return { someMethod: someMethod, anotherMethod: anotherMethod }; }());
نتیجه
همانطور که دیدیم، در جاوا اسکریپت عبارات تابع اساساً با اعلان های تابع تفاوت ندارند، اما اغلب می توانند کدهای تمیزتر و خواناتری را به همراه داشته باشند. کاربردهای هر کدام، آنها را به بخشی ضروری از جعبه ابزار هر توسعه دهنده تبدیل می کند.
ممنون هرچی در مورد این موضوع میخواستم به راحتی عنوان کرده بودید
سلام به تیم ایرانکاسرور ممنون از پست خوبتون
ممنون هرچی در مورد این موضوع میخواستم به راحتی عنوان کرده بودید
کارتون خوبه سپاسگذارم
سلام به تیم ایرانکاسرور ممنون از پست خوبتون
ایرانیکاسرور همیشه عالی هستید
آفرین ممنون