متغیرها در جاوااسکریپت (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
بیشتر در کدهای قدیمیتر یافت میشود و بهطور معمول پیشنهاد نمیشود مگر در موارد خاص.
امیدوارم این توضیحات کمککننده باشد! اگر سوال بیشتری دارید، بپرسید.