سعید عبدالهی
سعید عبدالهی
خواندن ۲ دقیقه·۱ سال پیش

مفهوم closure در جاوا اسکریپت

closure in JS
closure in JS


سلام رفقا. امیدوارم حالتون عالی باشه.

یکی از سوالاتی که ممکنه به عنوان JavaScript developer در مصاحبه های شغلی ازت بپرسن، اینه که closure در جاوا اسکریپت چیه و چی کار میکنه؟

شاید اولش خیلی سخت به نظر برسه ولی اگه این مقاله رو تا آخر بخونی خیلیییی راحت با این مفهوم آشنا میشی. بهت قول میدم...




تعریف closure در یه جمله: یعنی زمانی که تابع بتونه هم از متغیرهای درونی و هم از متغیرهای بیرونی خودش استفاده کنه...

تماااااااااام.

به صورت کلی، متغیرهایی که در جاوا اسکریپت ساخته میشن، 2 نوع هستند:

1. متغیرهای global

2. متغیرهای local

متغیرهای گلوبال در همه جای جاوا اسکریپت در دسترس هستند و میشه ازشون استفاده کرد.(هیچ محدودیتی نداره)

در حالی که....

متغیرهای لوکال فقط درون یه scope یا تابع در دسترس هستن و بیرون از تابع به هیچ دردی نمیخوره.



شروع یه داستان:بزار این مفهوم رو با یه داستان خیلی باحال و کوتاه که خودم ساختمش برات بگم.

فرض کن یه تابع تو جاوا اسکریپت ساختی و این تابع عزیز ما قصد داره به یه مسافرت بره...

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

هر زمان که بخواد، میتونه زیپ کوله پشتی رو باز کنه و هرچی دوست داره رو استفاده کنه. (متغیرها، دستورات و ....)

مثالو نگاه کن:

متغیر لوکال
متغیر لوکال


(در اینجا آقای تابع یه متغیر تو کوله پشتی خودش داره و خیلی راحت میتونه ازش استفاده کنه)

آقای تابع حتی میتونه از منابع دیگران هم بدون نگرانی استفاده کنه و اونارو هم در کنار خودش داشته باشه.

مثال :

متغیر گلوبال
متغیر گلوبال


(در اینجا هم آقای تابع تو کوله پشتی خودش هیچ متغیری نداره و از کس دیگه ای قرض میکنه و استفاده میکنه)

تموم شد و رفت. این یعنی مفهوم closure

ما closure هارو هیچ وقت دستی تنظیم نمیکنیم. خود جاوا اسکریپت اونو به صورت اتومات میسازه.

فقط کافیه تو با مفهوم و نحوه ی کار کردنش آشنا بشی.

خدایی هیچ محتوایی رو پیدا نکردم که این قدر ساده و باحال این مفهوم رو توضیح بده. پس تصمیم گرفتم خودم یه مقاله بنویسم.

اگه خوشت اومد برای بقیه هم این مفهومو توضیح بده و برام دعا کن.

دوستون دارم

جاوا اسکریپتClosurejavascriptبرنامه نویسی
میلیون‌ها کیلومتر اسکرول کردم تا به هدفم نزدیک بشم و این داستان همچنان ادامه داره...
شاید از این پست‌ها خوشتان بیاید