سه راه برای تعریف کردن متغیر توی جاوااسکریپت هستن که let و const توسط ES6 معرفی شدن. متغیرهایی که با var تعریف میشن به اصطلاح Function Scope هستن. یعنی سرتاسر یک تابع قابل دسترسی هستن:
function avoir() { if (true) { var x = 5; } console.log(x); } avoir() // 5
همونطور که میبینید متغیر x داخل if تعریف شد و بیرون از if هم قابل دسترسی هست. اما اگه متغیر x رو با let یا const تعریف میکردیم، بیرون از if یا هر بلاک دیگهای قابل استفاده نبود. به فضای بین دو براکت میگن بلاک:
function avoir() { if (true) { let x = 5; } console.log(x); } avoir(); // Error: x is not defined
چرا x قابل دسترسی نیست؟ چون متغیرهایی که با let و const تعریف میشن فقط توی محدودهی همون بلاک قابل دسترسی هستن.
تفاوت let و const
وقتی متغیری با let تعریف میشه بعدا میشه مقدار اون رو تغییر داد. اما متغیرهایی که با const تعریف میشن همون ابتدای تعریف باید مقداردهی بشن و مقدارش هم دیگه قابل تغییر نیست.
پیشنهاد میکنم این مقاله اختصاصی درباره تفاوتهای var و let و const رو بخونین.
منبع: