var: نطاقها الدالة كلها.letوconst: نطاقهما الكتلة{ }التي عُرّفا فيها.const: لا يمكن إعادة تعيينها.
if (true) {
var a = 1;
let b = 2;
}
console.log(a); // 1
console.log(b); // ReferenceError
مشكلة var الشهيرة
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i)); // 3, 3, 3
}
for (let j = 0; j < 3; j++) {
setTimeout(() => console.log(j)); // 0, 1, 2
}
النصيحة
استخدم const افتراضيًا، وlet عندما تحتاج تغيير القيمة، وتجنب var في الكود الجديد.