سه راه برای تعریف کردن متغیر توی جاوااسکریپت هستن که 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 رو بخونین.

 

منبع: