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

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

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

ابدأ الدورة

مقدمة: لماذا هذه المهمة أسهل مما تبدو

\n\n

كل مطور كتب ولو مرة واحدة بلغة JavaScript، واجه موقفًا يحتاج فيه للتحقق مما إذا كانت السلسلة فارغة أمامه، أو ربما كانت null أو undefined. قد يبدو الأمر بسيطًا؟ لكن لنكن صادقين: كم مرة كتبت if (str == "") وواجهت خطأ عندما كان المتغير null؟ وكم مرة حاولت استدعاء .trim() على undefined والتقطت خطأ أحمر في وحدة التحكم؟

\n\n

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

\n\n

سنتحدث عن ماهية القيم falsy، وكيف يعمل العاملان == و ===، ولماذا "" و 0 ليسا نفس false. بنهاية المقال، ستعرف بالضبط كيفية كتابة فحص عالمي لا يخذلك.

\n\n

المشكلة: ما الذي يعتبر سلسلة "فارغة"؟

\n\n

قبل كتابة الكود، يجب تحديد ما نتحقق منه بوضوح. في سياق السؤال "How do I check for an empty/undefined/null string in JavaScript?"، نعني عادةً ثلاث حالات:

\n\n
    \n
  • سلسلة فارغة ("" أو '') - سلسلة طولها صفر.
  • \n
  • null - غياب متعمد للقيمة.
  • \n
  • undefined - المتغير معلن ولكن لم تتم تهيئته.
  • \n
\n\n

لكن هناك حالة رابعة غير صريحة: سلسلة تتكون فقط من مسافات (" "). غالبًا ما تعتبر "فارغة" من وجهة نظر منطق الأعمال. سنحلل جميع الخيارات.

\n\n

الطريقة 1: التحويل المنطقي (الأبسط)

\n\n

الطريقة الأكثر شيوعًا وإيجازًا هي استخدام حقيقة أن JavaScript يحول القيم تلقائيًا إلى true أو false في السياق المنطقي.

\n\n
let str = "";\n\nif (!str) {\n    console.log("السلسلة فارغة، null أو undefined");\n} else {\n    console.log("السلسلة ليست فارغة");\n}\n
\n\n

هذا الكود سيعمل مع ""، null، undefined، 0، NaN و false. لماذا؟ لأن كل هذه القيم في JavaScript تعتبر falsy. إذا كنت متأكدًا من أن المتغير هو سلسلة (أو قد يكون null/undefined)، فهذه الطريقة كافية.

\n\n

لكن هناك مشكلة: إذا كان المتغير يساوي 0 (رقم)، فإن الفحص سيقول أيضًا "فارغ". إذا كان هذا مهمًا، فهذه الطريقة غير مناسبة.

\n\n

الطريقة 2: المقارنة الصارمة (تحكم واضح)

\n\n

إذا كنت تريد أن تكون دقيقًا قدر الإمكان وتفحص فقط الحالات الثلاث المذكورة، استخدم المقارنة الصارمة (===).

\n\n
function isEmptyOrNull(str) {\n    return str === "" || str === null || str === undefined;\n}\n\nconsole.log(isEmptyOrNull(""));      // true\nconsole.log(isEmptyOrNull(null));    // true\nconsole.log(isEmptyOrNull(undefined)); // true\nconsole.log(isEmptyOrNull("hello")); // false\nconsole.log(isEmptyOrNull(0));       // false (الرقم لن يمر)\n
\n\n

هذا الكود يعمل بدون مفاجآت. لا يخلط بين 0 أو false والسلسلة الفارغة. لكنه لا يعالج السلاسل المكونة من مسافات.

\n\n

الطريقة 3: Trim + فحص (للفراغ "الحقيقي")

\n\n

غالبًا ما يدخل المستخدمون مسافات في النموذج، والسلسلة " " تبدو فارغة بصريًا. لالتقاط هذه الحالات أيضًا، نحتاج إلى قص المسافات باستخدام طريقة .trim().

\n\n
function isBlank(str) {\n    return !str || str.trim() === "";\n}\n\nconsole                

المدونات

توصيات الكتب