التحقق من القيم null و undefined والفارغة في JavaScript: دليل شامل

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

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

ابدأ الدورة

لماذا يُعد التحقق من القيم null و undefined والفارغة كابوسًا لكل مطور JavaScript؟

\n\n

هل سبق لك أن وجدت نفسك تفكر: "لماذا أكتب مرة أخرى هذه البنية المعقدة if (x !== null && x !== undefined && x !== '')؟" إذا كان الأمر كذلك، فأنت لست وحدك. السؤال "هل توجد دالة قياسية للتحقق من المتغيرات null أو undefined أو الفارغة في JavaScript؟" على Stack Overflow حصد آلاف المشاهدات. وهذا ليس من قبيل الصدفة.

\n\n

لا توجد في JavaScript دالة مدمجة تتحقق من كل شيء دفعة واحدة. لكن هذا لا يعني أننا محكومون بالمعاناة. في هذه المقالة، سنفهم لماذا لا توجد هذه الدالة، وكيف يمكننا تجاوز هذا القيد بأناقة، ونكتب أداة المساعدة المثالية الخاصة بنا.

\n\n

هل أنت مستعد لتحويل فوضى التحقق إلى كود نظيف ومفهوم؟ هيا بنا!

\n\n

ما هي القيم null و undefined و blank (سلسلة فارغة) في JavaScript؟

\n\n

قبل أن نبحث عن "الحل السحري"، دعنا نفهم ما نتعامل معه. هذه المفاهيم الثلاثة هي ثلاثة وحوش مختلفة، والخلط بينها أمر خطير.

\n\n
    \n
  • undefined — تم تعريف المتغير ولكن لم يتم تعيين قيمة له. هذه هي "القيمة الافتراضية" من JavaScript.
  • \n
  • null — المتغير موجود، ولكن تم تعيين "لا شيء" له عن قصد. هذا اختيار واعٍ من المطور.
  • \n
  • blank (سلسلة فارغة) — '' أو "". السلسلة موجودة، ولكن لا تحتوي على أحرف.
  • \n
\n\n

الفرق الرئيسي: null هو كائن (نعم، هذا خطأ تاريخي في JS أصبح الآن ميزة)، undefined هو نوع خاص، والسلسلة الفارغة هي سلسلة نصية.

\n\n
let a; // undefined\nlet b = null; // null\nlet c = ''; // سلسلة فارغة (blank)\nconsole.log(typeof a); // "undefined"\nconsole.log(typeof b); // "object" (نعم، هذا صحيح!)\nconsole.log(typeof c); // "string"
\n\n

تخيل الآن: تريد التحقق من أن المتغير "فارغ" بأي معنى. التحقق العادي if (!value) سيعمل مع null و undefined، لكنه لن يأخذ في الاعتبار السلسلة الفارغة؟ لا، سيفعل! لأن السلسلة الفارغة هي قيمة falsy. لكن هناك مشكلة...

\n\n

لماذا يعتبر استخدام if (!value) فكرة سيئة؟

\n\n

نعم، if (!value) سيكتشف null و undefined و '' و 0 و false و NaN. لكن ماذا لو كانت 0 أو false قيمًا مقبولة لمتغيرك؟ على سبيل المثال، إذا كنت تتحقق من عدد المنتجات في سلة التسوق، فإن 0 أمر طبيعي، وليس "فارغًا".

\n\n
function processOrder(itemCount) {\n    if (!itemCount) {\n        console.log('خطأ: لا توجد منتجات!');\n    } else {\n        console.log('جارٍ معالجة الطلب...');\n    }\n}\nprocessOrder(0); // خطأ: لا توجد منتجات! — وهذا ليس خطأ، بل 0 منتج
\n\n

لهذا السبب نحتاج إلى دالة متخصصة، وليس تحققًا عامًا على "الصدق".

\n\n

دالة قياسية؟ لا، لكن هناك أنماط قياسية

\n\n

على سؤال "هل توجد دالة قياسية؟" الإجابة هي لا. لكن JavaScript تقدم أدوات مرنة لتتمكن من كتابة دالتك الخاصة. وهذا أفضل، لأن دالتك ستتوافق تمامًا مع متطلبات عملك.

\n\n

الخيار 1: التحقق البسيط (صارم)

\n\n

إذا كنت بحاجة للتحقق فقط من null و undefined — استخدم المقارنة الصارمة (===). هذه هي الطريقة الأكثر أمانًا.

\n\n
function isNullOrUndefined(value) {\n    return value === null || value === undefined;\n}\n\nconsole.log(isNullOrUndefined(null)); // true\nconsole.log(isNullOrUndefined(undefined)); // true\nconsole.log(isNullOrUndefined('')); // false\nconsole.log(isNullOrUndefined(0)); // false
\n\n

الميزة: لا يخلط بين 0 والسلسلة الفارغة وبين "لا شيء". العيب: لا يتحقق من الفراغ

المدونات

توصيات الكتب