-
- 27 اردیبهشت 1404
- برنامه نویسی جاوا اسکریپت
در جاوااسکریپت (JavaScript)، var و let هر دو برای تعریف متغیر استفاده میشوند، اما تفاوتهای مهمی با هم دارند که دانستن آنها برای جلوگیری از باگها ضروری است.
🆚 تفاوتهای کلیدی بین var
و let
ویژگی | var |
let |
---|---|---|
محدوده (Scope) | تابعی (function-scoped) | بلوکی (block-scoped) |
بازتعریف مجدد (Redeclaration) | مجاز است | مجاز نیست در یک بلاک |
هوایینگ (Hoisting) | بله، ولی مقدار undefined دارد |
بله، اما قبل از تعریف قابل استفاده نیست (TDZ) |
اعلان تکراری در یک بلوک | مجاز است | خطا میدهد |
قابل دسترس بودن قبل از تعریف | بله، مقدار undefined است |
خطای ReferenceError |
📘 مثالها
🎯 ۱. محدوده (Scope)
function testVar() {
if (true) {
var x = 10;
}
console.log(x); // 10 ✅
}
function testLet() {
if (true) {
let y = 20;
}
console.log(y); // ❌ ReferenceError: y is not defined
}
testVar();
testLet();
🎯 ۲. هوایینگ (Hoisting)
console.log(a); // undefined
var a = 5;
console.log(b); // ❌ ReferenceError
let b = 10;
🎯 ۳. بازتعریف متغیر
var name = "Ali";
var name = "Reza"; // مجاز است ✅
let city = "Tehran";
// let city = "Shiraz"; // ❌ SyntaxError: Identifier 'city' has already been declared
✅ نتیجهگیری
-
همیشه از
let
(یاconst
) استفاده کن مگر اینکه دلیل خاصی برایvar
داشته باشی. -
let
ایمنتر و قابل پیشبینیتر است، مخصوصاً در حلقهها و توابع.
نظر خود را اینجا بنویسید