در جاوااسکریپت، برای تعریف متغیرها از سه کلمه کلیدی اصلی استفاده میشود: var
، let
، و const
. این سه کلمه کلیدی رفتار متفاوتی دارند که بسته به نیاز شما در برنامهنویسی میتوانید یکی از آنها را انتخاب کنید.
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' );
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
const
:const
نیز از ES6 معرفی شد و برای تعریف متغیرهایی استفاده میشود که قرار است مقدارشان تغییر نکند.const
نیز مانند let
در سطح بلوک (block scope) تعریف میشود.const
باید هنگام تعریف مقداردهی شوند و پس از آن نمیتوانند تغییر کنند.const
تعریف شود، میتوان به مقادیر درونی آن شیء یا آرایه دسترسی یا تغییر داد، اما خود مرجع به شیء یا آرایه نمیتواند تغییر کند.
const z = 10;
// z = 20; // خطا: تغییر مقدار متغیر const مجاز نیست.
console.log(z); // 10
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
بیشتر در کدهای قدیمیتر یافت میشود و بهطور معمول پیشنهاد نمیشود مگر در موارد خاص.امیدوارم این توضیحات کمککننده باشد! اگر سوال بیشتری دارید، بپرسید.