جاوا اسکریپت نسخه جدید ES6 – محدوده متغیر و تعریف ثوابت

جاوا اسکریپت نسخه جدید ES6 – محدوده متغیر و تعریف ثوابت

در قسمت قبل دیدیم که چگونه ES6 را در محیط سرور با nodeJS یا مرورگر اجرا کنیم و همچنین فهمیدیم برای پشتیبانی بهتر مروگر می بایست کدمان را با babel تبدیل به ES5 کنیم و حال میتوانیم شروع به یادگیری ES6  کنیم.

در این قسمت با مدیریت محدوده متغیر و تعریف ثوابت با ما همراه باشید 🙂

مدیریت محدوده متغیر در جاوا اسکریپت یکی از مشکل ترین بخش های توسعه در جاوا اسکریپت است، برای مثال متغیری با نام totalPrice در محدوده global تعریف کردید و میخواهید آن متغیر در توابعی که تعریف می کنید قابل استفاده نباشد یا حتی متغیر increment حلقه خود را با نام i ساختید اما میخواهید در دیگر حلقه ها تعریف نشده باشد در object ها و callback ها این مشکل بزرگ و بزرگتر میشود که اغلب برنامه نویسان راه حل های متفاوت و روش های کد نویسی متفاوت دارند.

مدیریت بهتر محدوده متغیر ها با ES6:

میدانیم متغیر ها در جاوا اسکریپت فقط با کلمه کلیدی var تعریف می شوند و اگر کلمه کلیدی var را قبل از تعریف متغیر نگذاریم متغیرها در محدوده global تعریف میشوند
اما در ES6 با اضافه کردن یک کلمه کلیدی جدید به نام let میتوان متغیر ها را در همان Block Code تعریف و استفاده کرد و در خارج از آن Block Code آن متغیر غیر قابل استفاده است.
برای درک این موضوع مثال زیر را مشاهده کنید:

با اجرای مثال بالا خواهید دید که مقادیر 0 تا 5 در خروجی مشاهده میشوند و log که بیرون از حلقه for است error می دهد چرا چون متغیر i به جای استفاده از کلمه کلیدی var با استفاده از کلمه کلیدی let تعریف شده است به همین خاطر این متغیر صورت محلی است و در همان حلقه for قابل استفاده است.
توجه داشته باشید هر {} یک Block Code محسوب میشود چه با دستور هایی مثل if , for, while و… استفاده شود چه تنها برای نمونه به مثال زیر توجه کنید:
 

تعریف ثوابت(Constants) در ES6:

ثوابت محلی برای نگه داری مقداری هستند که غیر قابل تغییر هستند ثوابت یک بار تعریف میشوند و در ادامه تعریف استفاده میشوند همچنین ثوابت محلی را در حافظه نمی گیرند.
تا قبل از ارائه ES6 تعریف ثوابت در جاوا اسکریپت امکان پذیر نبود اما حال امکان پذیر است برای تعریف ثوابت در ES6 از کلمه کلیدی const استفاده میشود به مثال زیر دقت کنید:

دیدید که تعریف ثوابت چگونه است و همچنین دیدید اگر بخواهید مقدار ثابتی را تغییر دهید با error مواجه میشوید.
بهتر است متغیر هایی مثل رمز یا نام database ها یا هر چیزی که که تغییر نمیکنند را با const تعریف کنید هم Data safe هستند هم سریع تر هستند.

بهتر است ثوابت را به صورت UPPER_SNAKE_CASE نام گذاری کنید تا ازمتغیر ها  قابل تفکیک و شناسایی باشند.

در قسمت های بعد با قابلیت های بیشتری از ES6 آشنا میشویم 😉