هل المتغير مَرئي؟
الأهمية: 4
ماذا سيكون الناتج من هذا الكود؟
let x = 1;
function func() {
console.log(x); // ?
let x = 2;
}
func();
ملحوظة: هناك خدعة في هذه المهمة. الحل ليس واضحاً بما فيه الكفاية.
الناتج: خطأ.
جرب الكود للتأكد:
let x = 1;
function func() {
console.log(x); // ReferenceError: لا نستطيع الوصول لـ 'x' قبل إعطائها قيمة
let x = 2;
}
func();
In this example we can observe the peculiar difference between a “non-existing” and “uninitialized” variable.
أو بطريقة أخرى, المُتغير تقنياً موجود, لكن ا تستطيع الوصول له قبل let
.
الكود فى الأعلي وضح ذلك.
function func() {
// المتغير المحلي X يعتبر معروف للمحرك من البداية, لكن **غير معرف بقيمة** تظل حتي let
// لذلك هناك خطأ
console.log(x); // ReferenceError: لا نستطيع الوصول لـ 'x' قبل إعطائها قيمة
let x = 2;
}
هذه المنطقة من المتغيرات المؤقتة الغير مستخدمة من بداية الكود حتي let
تسمي بالمنطقة الميتة