0
سبد خرید من 0 دوره
سبد خرید شما خالیست :(
پرسش

تفاوت بین کلمات کلیدی let و var چیه ؟

what is the difference between let and var

سلام
میخواستم بدونم تفاوت‌های بین این دو کلمه کلیدی تو تعریف متغییر چیه؟ و کی بهتره از let به جای var استفاده کنیم؟

پاسخ
محمدامین سعیدی راد
بیوگرافی محمدامین سعیدی راد

چند تا تفاوت اصلی بین تعریف متغییر با کلمه کلیدی var  و let  وجود داره که در ادامه به مهم ترین هاش اشاره میکنم.

1 – محدوده  (Scope)

var دارای محدوده تابعی (function scope) هست ، به این معنی که اگه داخل یک تابع تعریف بشه ، تو کل اون تابع قابل دسترسی است.

let دارای محدوده بلوکی (block scope) است، به این معنی که فقط در داخل بلوکی که تعریف شده ( یعنی بین {} ) قابل دسترسه.

مثال

function test() 
{ 
if (true) { var x = 1; let y = 2; } console.log(x); 
console.log(y); 
} 
test();

2 – هوستینگ  (Hoisting)

متغیرهای تعریف شده با var به ابتدای محدوده خودشون منتقل میشن ، اما مقداردهی اولیه اونها انجام نمیشه.

متغیرهای تعریف شده با let هم به ابتدای بلوک خودشون منتقل میشن، اما قبل از مقداردهی اولیه نمی‌تونیم به اونها دسترسی داشته باشیم و در این بازه زمانی اصطلاحاً  (temporal dead zone)  هستند.

مثال

console.log(a); // undefined
var a = 5;
console.log(b); // ReferenceError
let b = 10;

3 - تعریف مجدد (Redeclaration)

var اجازه میده که متغیر رو دوباره تعریف کنی، ولی let این اجازه رو نمیده ، که این باعث میشه کد تمیزتر و احتمال خطا کمتر بشه.

var x = 1;
var x = 2; // no problem
let y = 1;
let y = 2; // error

 

به طور کلی، استفاده از let به خاطر قابلیت‌های بهترش در کنترل حوزه و جلوگیری از خطاهای غیرمنتظره توی کد پیشنهاد میشه.

پاسخ: 1403/05/22
آخرین آپدیت: 1403/07/07