undefined أو null في JavaScript: كيفية التحقق من المتغير في 2025

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

«المتغير غير معرّف»: لماذا هذه المشكلة تؤرق الجميع؟

\n\n

إذا كنت قد كتبت كودًا بلغة JavaScript ولو لمرة واحدة، فبالتأكيد واجهت هذا الموقف: تقوم بتشغيل الكود، وتظهر في وحدة التحكم رسالة حمراء Uncaught TypeError: Cannot read properties of undefined. أو الأسوأ من ذلك — null is not an object. هل يبدو ذلك مألوفًا؟ هذا واحد من أكثر الأخطاء شيوعًا التي تطارد المطورين من جميع المستويات.

\n\n

سؤال «How can I determine if a variable is 'undefined' or 'null'?» على Stack Overflow حصد آلاف المشاهدات ومئات الإجابات. وهذا ليس بدون سبب: في JavaScript، هاتان القيمتان متشابهتان لكنهما تتصرفان بشكل مختلف. في عام 2025، عندما يصبح الكود أكثر تعقيدًا والمشاريع أكبر حجمًا، تتحول القدرة على التحقق بشكل صحيح من undefined و null من «من الجيد معرفتها» إلى «من الضروري إتقانها».

\n\n

في هذه المقالة، سنستعرض جميع طرق التحقق، من البسيطة إلى المتقدمة، ونوضح أي الطرق يجب استخدامها في التطوير الحديث. هيا بنا!

\n\n

undefined مقابل null: ما الفرق؟

\n\n

قبل أن نتحقق، دعنا نفهم ما نتعامل معه. في JavaScript، undefined و null هما قيمتان بدائيتان مختلفتان، لكل منهما نوعه الخاص.

\n\n

undefined

\n

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

\n\n
let myVar;\nconsole.log(myVar); // undefined\n\nfunction doNothing() {}\nconsole.log(doNothing()); // undefined\n\nconsole.log(someNonExistentVariable); // ReferenceError، لكن عند الوصول إلى خاصية كائن:\nconst obj = {};\nconsole.log(obj.prop); // undefined\n
\n\n

null

\n

null هي القيمة التي يُسندها المطور عن قصد. تعني «فارغ»، «لا شيء»، «القيمة غير موجودة». null هو كائن من وجهة نظر typeof (نعم، هذا خطأ تاريخي، لكنه أصبح ميزة).

\n\n
let myVar = null;\nconsole.log(myVar); // null\nconsole.log(typeof myVar); // "object" — نعم، هذا صحيح!\n
\n\n

الفرق الرئيسي: undefined تعني «لم يُسند بعد»، بينما null تعني «فارغ عن قصد». لكن عند المقارنة غير الصارمة، فإنهما متساويان:

\n\n
console.log(null == undefined); // true\nconsole.log(null === undefined); // false\n
\n\n

وبسبب هذه المساواة غير الصارمة ينشأ الارتباك. لذلك، توصي أفضل الممارسات لعام 2025 باستخدام المقارنة الصارمة (===).

\n\n

أفضل 5 طرق للتحقق من undefined و null

\n\n

دعنا نستعرض جميع الطرق الشائعة، من الأبسط إلى الأحدث. سنقيم كل طريقة بناءً على ثلاثة معايير: قابلية القراءة، والموثوقية، والأداء.

\n\n

1. المقارنة الصارمة (===) — المعيار الذهبي

\n

الطريقة الأكثر مباشرة ووضوحًا هي مقارنة المتغير مباشرة مع undefined أو null باستخدام ===.

\n\n
let value = null;\n\n// التحقق من null\nif (value === null) {\n    console.log('هذا هو null');\n}\n\n// التحقق من undefined\nif (value === undefined) {\n    console.log('هذا هو undefined');\n}\n\n// التحقق من null أو undefined (بشكل منفصل)\nif (value === null || value === undefined) {\n    console.log('القيمة غير موجودة');\n}\n
\n\n

لماذا هذه أفضل ممارسة؟

\n
    \n
  • أقصى درجات الوضوح — أي مطور سيفهم ما تتحقق منه.
  • \n
  • لا توجد تحويلات نوع غير متوقعة.
  • \n
  • تعمل في جميع إصدارات JavaScript، بما في ذلك الأقدم.
  • \n
\n\n

العيب: إذا كنت بحاجة للتحقق من كلا القيمتين معًا، فعليك كتابة شرطين. لكن يمكن حل ذلك باستخدام العامل || كما في المثال أعلاه.

\n\n

2. عامل الدمج الصفري (??) — الجديد الذي أثبت نفسه

\n

بدءًا من ES2020، ظهر في JavaScript العامل ?? (nu

المدونات

توصيات الكتب