JavaScript Fundamentals

إتقان غير معرف في جافا سكريبت

Spread the love

تتعامل جافا سكريبت، كونها بلغة برمجة ديناميكية الأنواع، مع غياب القيمة بشكل مختلف عن العديد من اللغات الأخرى. وهذا الدقيق، الممثل بكلمة undefined، أساسي لكتابة شفرة قوية وموثوقة. تستعرض هذه المقالة undefined، والسيناريوهات الشائعة التي تظهر فيها، وكيف تختلف عن null.

محتويات

فهم undefined

في جافا سكريبت، undefined هي قيمة بدائية تشير إلى أن المتغير قد تم الإعلان عنه ولكن لم يتم تعيين قيمة له. هذا يختلف عن المتغير غير المعلن عنه؛ حيث أن محاولة الوصول إلى متغير غير معلن عنه يرمي ReferenceError. undefined تشير إلى قيمة مفقودة، وليست حالة خطأ في حد ذاتها. تقوم جافا سكريبت تلقائيًا بتعيين undefined للمتغيرات المعلنة ولكن غير المُبدأة.

سيناريوهات تؤدي إلى undefined

يمكن أن تؤدي عدة حالات إلى أن تقوم دالة أو تعبير بإرجاع undefined:

  • الدوال بدون جمل return: الدوال التي لا تستخدم صراحةً جملة return تقوم ضمنيًا بإرجاع undefined.
  • الوصول إلى خصائص غير موجودة: محاولة الوصول إلى خاصية غير موجودة في كائن ينتج عنها undefined.
  • الوصول إلى عناصر المصفوفة خارج الحدود: الوصول إلى عنصر مصفوفة باستخدام فهرس أكبر من أو يساوي طول المصفوفة يُرجع undefined.
  • المتغيرات غير المُبدأة: كما ذكرنا، فإن المتغير المُعلن عنه ولكن غير المُبدأ يحتفظ بقيمة undefined.
  • عامل التشغيل delete: استخدام delete على خاصية كائن يقوم بإزالة الخاصية، تاركًا undefined في مكانها.

فيما يلي بعض أمثلة الشفرة التي توضح هذه السيناريوهات:


function myFunction() {
  // لا يوجد جملة return
}

let result = myFunction();
console.log(result); // الإخراج: undefined

let myObject = { name: "John" };
console.log(myObject.age); // الإخراج: undefined

let myArray = [1, 2, 3];
console.log(myArray[3]); // الإخراج: undefined

let myVariable;
console.log(myVariable); // الإخراج: undefined

let myObject2 = { name: "John", age: 30 };
delete myObject2.age;
console.log(myObject2.age); // الإخراج: undefined

undefined مقابل null

يمثل كل من undefined و null غياب قيمة ذات معنى، لكنهما يختلفان بشكل طفيف:

  • undefined: يشير إلى أن المتغير قد تم الإعلان عنه ولكن لم يتم تعيين قيمة له. يتم تعيينه تلقائيًا بواسطة جافا سكريبت.
  • null: يمثل الغياب المتعمد لقيمة. يتم تعيينه صراحةً بواسطة المبرمج.

على الرغم من استخدامهما بالتبادل في كثير من الأحيان، فإن undefined تشير إلى غياب غير مقصود، بينما null تشير إلى تعيين متعمد. هما قيمتان مختلفتان؛ undefined === null هي false.

أفضل الممارسات

يُعد فهم undefined أمرًا حيويًا للتصحيح وكتابة شفرة نظيفة وقابلة للتنبؤ. إن استخدام null صراحةً عند الاقتضاء يُحسّن من قابلية قراءة الشفرة وصيانتها. تجنب الاعتماد على قيم undefined الضمنية؛ بدلاً من ذلك، قم بتعيين null للإشارة إلى الغياب المتعمد لقيمة. هذا يحسن وضوح الشفرة ويقلل من الأخطاء المحتملة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *