

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