درس 4 از 24

تفاوت let و const در JavaScript چیست؟ آموزش اعلان، مقداردهی و مقداردهی مجدد

بخش: مقدمه جاوا اسکریپت

هنگام کار با جاوا اسکریپت، معمولاً متغیرهایی را تعریف می‌کنید تا داده‌هایی را ذخیره کنید که قصد دارید در سراسر برنامه از آن‌ها استفاده کنید.

در جاوا اسکریپت مدرن، let و const روش‌های ترجیحی برای تعریف متغیرها هستند، اما از نظر نحوه مدیریت مقداردهی (assignment) و مقداردهی مجدد (reassignment) با هم تفاوت دارند.

در این درس بررسی می‌کنیم که let و const از نظر اعلان متغیر، مقداردهی و مقداردهی مجدد چه تفاوت‌هایی دارند.

کلمه کلیدی let به شما اجازه می‌دهد متغیرهایی تعریف کنید که بعداً بتوان آن‌ها را به‌روزرسانی یا دوباره مقداردهی کرد. می‌توانید let را مثل یک محفظه انعطاف‌پذیر در نظر بگیرید—وقتی یک مقدار داخل آن ذخیره کردید، می‌توانید در صورت نیاز در طول برنامه آن مقدار را تغییر دهید.

در اینجا نمونه‌ای از تعریف و مقداردهی یک متغیر با let آمده است:

let score = 10;

در این حالت، متغیر score تعریف شده و مقدار 10 به آن اختصاص داده شده است. اگر بخواهید بعداً مقدار آن را به‌روزرسانی کنید، به‌راحتی می‌توانید این کار را انجام دهید:

let score = 10;
console.log(score); // 10

score = 20;
console.log(score); // 20
10
20

حالا score مقدار 20 را نگه می‌دارد. این موضوع باعث می‌شود let مخصوصاً زمانی مفید باشد که می‌دانید مقدار یک متغیر هنگام اجرای برنامه تغییر خواهد کرد.

از طرف دیگر، const برای تعریف متغیرهایی استفاده می‌شود که ثابت هستند. وقتی یک مقدار را به متغیری که با const تعریف شده اختصاص دادید، دیگر نمی‌توانید آن را دوباره مقداردهی کنید.

این موضوع const را برای مقادیری ایده‌آل می‌کند که نمی‌خواهید هنگام اجرای برنامه به اشتباه تغییر کنند.

در اینجا نمونه‌ای از تعریف و مقداردهی یک متغیر با const آمده است:

const maxScore = 100;
console.log(maxScore); // 100
100

وقتی maxScore مقدار 100 را دریافت کرد، دیگر قابل تغییر نیست:

maxScore = 200; // This will result in an error

تلاش برای مقداردهی مجدد به یک متغیر const باعث ایجاد خطا در console جاوا اسکریپت می‌شود، چون متغیرهای const پس از مقداردهی، غیرقابل تغییر (immutable) هستند.

می‌توانید یک متغیر با let را بدون این‌که بلافاصله مقداری به آن اختصاص دهید تعریف کنید، و بعداً به آن مقدار بدهید:

let age;
console.log(age); // undefined

age = 25;
console.log(age); // 25
undefined
25

متغیرهایی که با const تعریف می‌شوند باید در همان زمان تعریف، مقداردهی شوند. اگر تلاش کنید یک متغیر const را بدون مقداردهی تعریف کنید، با خطا مواجه می‌شوید:

const age; // Error: Missing initializer in const declaration

باید زمانی از let استفاده کنید که لازم دارید متغیرهایی تعریف کنید که بعداً دوباره مقداردهی می‌شوند. برای مثال، دنبال کردن امتیازی که تغییر می‌کند یا به‌روزرسانی یک مقدار در طول زمان در برنامه.

از const استفاده کنید وقتی می‌خواهید متغیرهایی تعریف کنید که باید ثابت بمانند؛ مثل مقادیر پیکربندی (configuration values) یا تنظیماتی (settings) که نباید به‌طور اتفاقی تغییر کنند.

همچنین می‌توانید از کلمه کلیدی var هم استفاده کنید، اما دیگر به اندازه قبل توصیه نمی‌شود. var تا حدی شبیه let است، با این تفاوت که محدوده (scope) گسترده‌تری دارد و همین موضوع احتمال ایجاد مشکل در برنامه را بیشتر می‌کند.


سوالات

اگر تلاش کنید مقدار یک متغیر تعریف‌شده با const را دوباره مقداردهی کنید چه اتفاقی می‌افتد؟

  • مقدار بدون مشکل تغییر می‌کند.
  • مقدار اصلی به‌روزرسانی می‌شود، اما یک هشدار نمایش داده خواهد شد.
  • چون متغیرهای const قابل مقداردهی مجدد نیستند، یک خطا رخ خواهد داد.
  • مقدار جدید نادیده گرفته می‌شود و مقدار اصلی همان باقی می‌ماند.

کدام مورد روش درست برای اختصاص دادن عدد 100 به یک ثابت با نام maxScore است؟

  • const maxScore === 100;
  • const maxScore = 100;
  • const maxScore <= 100;
  • const maxScore == 100;

آیا می‌توان یک متغیر const را بدون اختصاص دادن مقدار تعریف کرد؟

  • بله، اما باید بعداً به آن مقدار بدهید.
  • نه، متغیرهای const باید هنگام تعریف مقداردهی اولیه شوند.
  • بله، اما فقط می‌توانید عدد را به عنوان مقدار اولیه اختصاص دهید.
  • نه، متغیرهای const باید در همان خط هم تعریف شوند و هم دوباره مقداردهی شوند.