JavaScript / دليل حلول تحريري

TypeError عند قراءة undefined أو null

تتبع القيمة الغائبة إلى حدها بدلاً من إخفاء كل فشل بالتسلسل الاختياري. شخّص البحث ومحددات DOM والإرجاع الناقص وبنية الاستجابة بسجلات مصطنعة.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى

قاعدة معرفة للقراءة فقط · بلا تعليقات عامة

تعرّف على الأعراض

تفشل قراءة الخاصية عند غياب دورة أو قبل جاهزية البنية أو بعد استجابة غير متوقعة. تختلف صياغة TypeError بالمحرك؛ احفظ الرسالة والمكدس محلياً وحدد القيمة الأساسية قبل القراءة الفاشلة.

افهم الأسباب المحتملة

  • قد تعيد find القيمة undefined وquerySelector القيمة null. ينتج الإرجاع الناقص undefined وقد تستخدم API القيمة null قصداً، وتعطي typeof null تاريخياً "object". تسبب قراءة المتداخل دون فحص ذلك الفشل، وقد يخفي بديل عام سجلاً مطلوباً يجب رفضه.

1. تحديد أول افتراض غير صالح

قسّم التعبير إلى الاستجابة والسجل والمطابق والعنوان. افحص النوع والوجود ببيانات مصطنعة لا تفريغ خاص. حدّد هل يسبق وصول البيانات أو يتبع غياب مطابقة أو إرجاعاً بلا قيمة. ابدأ بأول حد خاطئ لا بإضافة حراسة لكل خاصية. يحتاج المحدد فحص البنية والعمر، ويحتاج غياب البحث سياسة مجال.

2. تقرير هل يسمح بالغياب

قد يغيب عنوان فرعي اختيارياً بينما يتطلب التسجيل دورة صالحة. استخدم التسلسل الاختياري للأول والرفض الصريح للثاني. تحفظ ?? الصفر والنص الفارغ خلاف OR، ولا تحقق أي منهما السجل. اشترط data !== null ثم افحص الحقول. لا تفسر كل undefined قائمة فارغة فتخفي عيب تكامل كشاشة ناجحة.

3. إصلاح عقد الحد

تعيد القراءة المحلية نتيجة موسومة لغياب متوقع. يفحص المستدعي ok قبل title فلا يتنكر الغياب كسجل صالح. للعقدة المطلوبة افحص المحدد وجهز بعد البنية؛ وإن كان خطأ إعداد فأظهره بوضوح لا تعطيل صامت. أصلح return الناقص في المصدر بدلاً من كائن افتراضي بكل مستدعٍ.

javascript يبقى الغياب المتوقع مميزاً عن النجاح
function lookup(courses, id) {
  const course = courses.find(item => item.id === id);
  return course === undefined
    ? { ok: false, error: "course missing" }
    : { ok: true, title: course.title };
}
const courses = [{ id: 1, title: "DOM" }];
console.log(JSON.stringify(lookup(courses, 1)));
console.log(JSON.stringify(lookup(courses, 2)));
الناتج المتوقع
{"ok":true,"title":"DOM"}
{"ok":false,"error":"course missing"}

يرصد الفرعان دون تعطيل متعمد أو اعتماد على صياغة خطأ محرك معين.

4. إبقاء الإخفاق غير المتوقع ظاهراً

لا تحط الميزة بـcatch تعيد undefined فتمحو الفرق بين الغياب والعيب. عالج المتوقع حيث يفهم معناه واحفظ السبب وقدم رسالة آمنة. افحص انقطاع التسلسل الاختياري؛ فقد تعيد الأقواس ثم قراءة أخرى وصولاً عادياً غير آمن. تقطع ?. سلسلة محددة ولا تسكت كل استثناء أو تغني عن فهم العقد.

تحقق من نجاح الإصلاح

اختبر المطابق والغائب والقائمة الفارغة وnull الصريحة والسجل المشوه وفق العقد. افحص البنية الطبيعية والعقدة المطلوبة الغائبة. أكد حفظ الصفر والاختياري الفارغ ومنع الفعل المطلوب على سجل خاطئ. احتفظ بأصغر تكرار وقيمة الحد.

امنع تكرار المشكلة

  • سمّ نتائج الحدود وتحقق من الخارج مرة واختبر مسارات الغياب. افصل الاختياري من حالة المجال المطلوبة. راجع الإرجاع وعمر المحدد قبل بدائل الكائن التي تخفي الافتراض المكسور.

المراجع الرسمية