متغیرها در جاوااسکریپت (Variables in JavaScript)

در جاوااسکریپت، برای تعریف متغیرها از سه کلمه کلیدی اصلی استفاده میشود: var، let، و const. این سه کلمه کلیدی رفتار متفاوتی دارند که بسته به نیاز شما در برنامهنویسی میتوانید یکی از آنها را انتخاب کنید.
1. var:
- تعریف:
varاولین کلمه کلیدی برای تعریف متغیر در جاوااسکریپت است. - ویژگیها:
varبهطور معمول در سطح تابع (function scope) یا در سطح جهانی (global scope) تعریف میشود.- اگر متغیر با
varدر داخل یک بلوک (مانندifیاfor) تعریف شود، هنوز به کل تابع یا اسکوپ جهانی تعلق دارد. - اگر متغیری دوباره با
varدر همان اسکوپ تعریف شود، مقدار قبلی آن بازنویسی خواهد شد.
- مثال:
consovar x = 10;
if (true) {
var x = 20; // این تغییر، مقدار x در خارج از بلوک را نیز تغییر میدهد.
}
console.log(x); // 20
le.log( 'Code is Poetry' );
2. let:
- تعریف:
letاز ES6 به بعد معرفی شد و استفاده از آن بهطور گستردهتر پیشنهاد میشود. - ویژگیها:
letدر سطح بلوک (block scope) تعریف میشود. یعنی متغیرهای تعریفشده باletتنها در داخل بلوک (مانند{}) قابل دسترسی هستند.- این متغیرها میتوانند مجدداً در همان بلوک تغییر یابند.
- اگر از
letاستفاده کنید، خطایReferenceErrorدر صورت تلاش برای تعریف دوباره آن در همان بلوک رخ میدهد.
- مثال:
let y = 10;
if (true) {
let y = 20; // این y فقط در داخل بلوک if اثر دارد.
console.log(y); // 20
}
console.log(y); // 10
3. const:
- تعریف:
constنیز از ES6 معرفی شد و برای تعریف متغیرهایی استفاده میشود که قرار است مقدارشان تغییر نکند. - ویژگیها:
constنیز مانندletدر سطح بلوک (block scope) تعریف میشود.- متغیرهای تعریفشده با
constباید هنگام تعریف مقداردهی شوند و پس از آن نمیتوانند تغییر کنند. - اگر یک شیء یا آرایه با
constتعریف شود، میتوان به مقادیر درونی آن شیء یا آرایه دسترسی یا تغییر داد، اما خود مرجع به شیء یا آرایه نمیتواند تغییر کند.
- مثال:
const z = 10;
// z = 20; // خطا: تغییر مقدار متغیر const مجاز نیست.
console.log(z); // 10
نکات مهم:
- hoisting: متغیرهایی که با
varتعریف شدهاند به بالای اسکوپ منتقل میشوند (hoisted) اما باletوconstاین اتفاق نمیافتد. به عبارت دیگر، متغیرهایی که باletوconstتعریف میشوند، قبل از خطی که به آنها مقدار دادهاید، قابل دسترسی نیستند. - بازنویسی متغیرها:
letوconstبه شما اجازه نمیدهند که متغیر را دوباره تعریف کنید در حالی کهvarاین امکان را فراهم میکند.
مثال مقایسهای:
// var
var a = 5;
if (true) {
var a = 10; // متغیر a در سطح تابع یا جهانی بازنویسی میشود.
}
console.log(a); // 10
// let
let b = 5;
if (true) {
let b = 10; // فقط در داخل بلوک if معتبر است.
console.log(b); // 10
}
console.log(b); // 5
// const
const c = 5;
if (true) {
// c = 10; // خطا: تغییر مقدار متغیر const مجاز نیست.
}
console.log(c); // 5
انتخاب بین var، let و const:
- بهطور کلی، بهتر است از
letوconstبهجایvarاستفاده کنید.constبرای مقادیری که نباید تغییر کنند وletبرای مقادیری که نیاز به تغییر دارند مناسب است. varبیشتر در کدهای قدیمیتر یافت میشود و بهطور معمول پیشنهاد نمیشود مگر در موارد خاص.
امیدوارم این توضیحات کمککننده باشد! اگر سوال بیشتری دارید، بپرسید.














