آموزش کامل let، var و const در جاوااسکریپت

چرا متغیر میسازیم؟
در جاوااسکریپت، متغیر جایی است که میتوانیم اطلاعات (مثل نام کاربر، امتیاز بازی، یا قیمت محصول) را در حافظه برنامه ذخیره کنیم.
مثلاً اگر بخواهیم نام کسی را ذخیره کنیم:
let name = "Ali";
تعریف متغیر: var، let و const
در جاوااسکریپت برای ساختن متغیر سه راه داریم:
- var (قدیمیتر)
- let (جدیدتر – از ES6 به بعد)
- const (جدیدتر – از ES6 به بعد)
هرکدام فرقهایی دارند که اینجا ساده توضیح میدهم.
1. var — متغیر قدیمی و محدودیتهایش
var age = 20;
ویژگیها:
- در همه نسخههای جاوااسکریپت کار میکند.
- مشکل اصلی: حوزه دید یا Scope محدود نیست و ممکن است در برنامههای بزرگ باعث خطا و باگ شود.
- اگر یک متغیر با همون اسم را دوباره تعریف کنی، خطا نمیدهد، بلکه مقدار جدید جای قبلی را میگیرد.
مثال:
var x = 5;
if (true) {
var x = 10;
}
console.log(x); // خروجی: 10
توضیح: متغیر x خارج و داخل if یکی است و مقدارش عوض میشود.
2. let — پیشنهاد استفاده در برنامههای جدید
let score = 100;
ویژگیها:
- ES6 (جدیدتر)؛ تقریباً روی همه مرورگرهای امروزی پشتیبانی میشود.
- حوزه دید (Scope) بلوک دارد: یعنی فقط در محدودهای که تعریف میشود، اعتبار دارد.
- اگر سعی کنی متغیر تکراری با let تعریف کنی، خطا میگیرد.
مثال Scope بلوکی:
let y = 7;
if (true) {
let y = 15;
console.log(y); // خروجی: 15 (داخل if)
}
console.log(y); // خروجی: 7 (خارج از if)
توضیح: دو متغیر y جداگانه داریم. یکی داخل if، یکی بیرون.
3. const — مقدار ثابت و غیرقابل تغییر
const PI = 3.14;
ویژگیها:
- فقط یکبار مقداردهی میکنی؛ بعدش نمیتوانی مقدار را تغییر بدهی.
- حوزه دید بلوکی (مثل let)
- پیشنهاد میشود برای چیزهایی که نباید تغییر کنند (مانند تنظیمات یا مقادیر ثابت) استفاده شود.
مثال:
const username = "Sara";
// username = "Ali"; // خطا میدهد: مقدار const قابل تغییر نیست
تفاوت var، let و const در یک نگاه
| ویژگی | var | let | const |
|---|---|---|---|
| حوزه دید (اسکوپ) | تابعی | بلوکی | بلوکی |
| قابلیت تغییر مقدار | بله | بله | خیر (مگر اشیاء) |
| امکان تعریف دوباره | بله | خیر | خیر |
| نسخه معرفیشده | بسیار قدیمی | ES6 | ES6 |
🛑 یک نکته مهم درباره const و اشیاء/آرایهها
اگر متغیری را با const به یک آرایه یا شیء نسبت دهی، مرجع متغیر ثابت است؛ ولی خود آرایه یا شیء را میتوان تغییر داد.
const arr = [1, 2];
arr.push(3); // مشکلی نیست!
console.log(arr); // خروجی: [1, 2, 3]
اما نمیتوان arr را به آرایه جدیدی برابر کرد:
arr = [5, 6]; // خطا!
کِی از کدوم استفاده کنیم؟
- همیشه با let یا const کار کن، var فقط برای کدهای قدیمی لازم میشه.
- وقتی میدونی مقدار عوض نمیشه → از const
- اگر شاید نیاز شد مقدار تغییر کنه → از let
خلاصه مقاله:
- برای تعریف متغیر جدید، let یا const استفاده کن تا کدت واضحتر و امنتر باشه.
- تفاوتشون بیشتر بر سر حوزه دید (scope) و تغییرپذیری است.
- مرورگرهای امروزی fully پشتیبانی میکنند.
تمرین ساده
۱. سه متغیر با let، var، و const بساز و نتیجه را در کنسول چاپ کن.
۲. سعی کن مقدار const را تغییر بدی و خطا را ببین!