لوگوی دانیال کددانیال کدمقالاتشروع گفتگو

تفاوت let و const و var در جاوااسکریپت

آموزش جاوااسکریپت — ۱۷ مهر ۱۴۰۵

در جاوااسکریپت سه کلیدواژه برای تعریف متغیر داریم. تفاوت اصلی آن‌ها در محدوده‌ی دسترسی، امکان تعریف مجدد و تغییر مقدار است.

var: روش قدیمی

var به محدوده‌ی تابع وابسته است، نه بلاک. یعنی متغیری که داخل if یا for تعریف شود، بیرون از آن هم در دسترس است. همچنین می‌توان آن را دوباره تعریف کرد.

if (true) {
  var a = 1;
}
console.log(a); // 1

let: متغیر قابل تغییر با محدوده‌ی بلاک

متغیر let فقط داخل بلاکی که تعریف شده معتبر است. مقدارش را می‌توان عوض کرد، ولی در همان محدوده نمی‌توان آن را دوباره تعریف کرد.

if (true) {
  let b = 2;
}
console.log(b); // ReferenceError

const: مقدار ثابت با محدوده‌ی بلاک

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

const list = [1, 2];
list.push(3);   // مجاز
list = [];      // TypeError

Hoisting

هر سه کلیدواژه hoist می‌شوند، اما var با مقدار undefined قابل خواندن است، در حالی که خواندن let و const پیش از تعریف خطا می‌دهد.

کدام را استفاده کنیم؟

همین حالا با دانیال کد امتحان کنید
ورود به چت‌بات