درس ۸: متغیرهای Let (JS Let)
کلمه کلیدی let در سال ۲۰۱۵ معرفی شد. نکات مهم درباره آن عبارتند از:
- متغیرهای تعریف شده با let نمیتوانند دوباره تعریف (Re-declared) شوند.
- این متغیرها باید قبل از استفاده تعریف شوند.
- این متغیرها دارای محدوده بلوکی (Block Scope) هستند.
۱. عدم امکان تعریف مجدد
شما نمیتوانید یک متغیر را که با let تعریف شده، در همان محدوده دوباره تعریف کنید. این کار باعث جلوگیری از بروز خطاهای ناخواسته در برنامه میشود:
let x = “John Doe”;
let x = 0;
// خطای سینتکس: ‘x’ قبلاً تعریف شده است
در حالی که در نسخه قدیمی (var) این کار مجاز بود:
var x = “John Doe”;
var x = 0;
// در اینجا مشکلی پیش نمیآید
۲. محدوده بلوکی (Block Scope)
قبل از ES6، جاوااسکریپت فقط محدوده جهانی و محدوده تابعی داشت. با معرفی let، محدوده بلوکی اضافه شد.
متغیری که داخل یک بلوک { } با let تعریف شود، خارج از آن بلوک قابل دسترسی نیست:
{
let x = 2;
}
// در اینجا نمیتوان از x استفاده کرد
۳. تعریف مجدد در محدودههای متفاوت
تعریف مجدد یک متغیر با let در یک بلوک دیگر، مجاز است و متغیر جدیدی ایجاد میکند:
let x = 10;
// در اینجا x برابر ۱۰ است
{
let x = 2;
// در اینجا x برابر ۲ است
}
// در اینجا x دوباره برابر ۱۰ است
۴. بالا بردن (Hoisting)
متغیرهای تعریف شده با var به بالای کد منتقل میشوند و میتوان قبل از تعریف از آنها استفاده کرد. اما متغیرهای let اینگونه نیستند.
استفاده از متغیر let قبل از تعریف، باعث ایجاد خطای ReferenceError میشود.
قانون کلی: همیشه از let استفاده کنید، مگر اینکه مطمئن باشید مقدار متغیر هرگز تغییر نمیکند (که در آن صورت از const استفاده میکنیم).