🔍 ما هو العامل typeof في JavaScript؟

تخيل أنك تفتح صندوقاً مليئاً بأشياء مختلفة، ولكل شيء استخدام خاص. كيف تعرف ما بداخله؟ في عالم JavaScript، العامل typeof هو أداة المساعدة الذكية التي تخبرك بنوع البيانات المخزنة داخل أي متغير أو قيمة. إنه مثل "بطاقة الهوية" للبيانات في برنامجك! 🪪

ببساطة، typeof هو عامل (operator) مدمج في اللغة يقوم بإرجاع سلسلة نصية (string) تخبرك بنوع القيمة التي تمررها له. معرفة نوع البيانات أمر بالغ الأهمية، لأنه يساعدك على تجنب الأخطاء وكتابة كود أكثر أماناً وذكاءً.


📝 كيف نستخدم typeof؟ (الصيغة الأساسية)

استخدام typeof بسيط جداً! لديك طريقتان رئيسيتان:

الطريقة الأولى (كتعامل مع عامل)

typeof value;

هنا، value يمكن أن تكون أي متغير، أو قيمة مباشرة مثل "Hello" أو 42.

الطريقة الثانية (كتعامل مع دالة)

typeof(value);

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

💡 ملاحظة مهمة: كلا الطريقتين تعملان بنفس الطريقة تماماً! الفرق هو في الشكل فقط. يمكنك اختيار ما يناسبك.


🧪 نتائج typeof الشائعة (مع أمثلة عملية)

دعنا نختبر typeof مع أنواع البيانات الأساسية التي تعرفنا عليها. جرب هذه الأمثلة بنفسك في وحدة التحكم (Console) للمتصفح! 🧑‍💻

1. النصوص (String)

let myName = "أحمد";
console.log(typeof myName); // النتيجة: "string"
console.log(typeof("جافا سكريبت")); // النتيجة: "string"

يخبرنا typeof أن هذه القيمة من نوع نصي.

2. الأرقام (Number)

let myAge = 25;
let temperature = -5.7;
console.log(typeof myAge); // النتيجة: "number"
console.log(typeof temperature); // النتيجة: "number"

سواء كان الرقم صحيحاً أو كسرياً، سالباً أو موجباً، النتيجة ستكون "number".

3. القيم المنطقية (Boolean)

let isLoggedIn = true;
let hasPermission = false;
console.log(typeof isLoggedIn); // النتيجة: "boolean"
console.log(typeof(false)); // النتيجة: "boolean"

هنا النتيجة هي "boolean"، سواء كانت القيمة true أو false.

4. القيمة undefined

let notAssignedYet;
console.log(typeof notAssignedYet); // النتيجة: "undefined"

let explicitUndefined = undefined;
console.log(typeof explicitUndefined); // النتيجة: "undefined"

إذا أعلنت متغيراً ولم تعطِه قيمة، أو أعطيته القيمة undefined مباشرة، فسيكون نوعه "undefined".

5. القيمة null (الحالة الخاصة) 🤔

let emptyValue = null;
console.log(typeof emptyValue); // النتيجة: "object"

هذه نتيجة تاريخية وغريبة في جافا سكريبت! رغم أن null نوع بيانات خاص، إلا أن typeof يُرجع "object". تذكر هذه المعلومة كاستثناء.

6. الكائنات (Object)

let user = { name: "سارة", age: 30 };
console.log(typeof user); // النتيجة: "object"

let colors = ["أحمر", "أخضر", "أزرق"];
console.log(typeof colors); // النتيجة: "object"

لاحظ أن المصفوفات (Arrays) تُرجع أيضاً "object" عند استخدام typeof. سنتعلم لاحقاً طرقاً أفضل للتمييز بين المصفوفات والكائنات العادية.


💡 لماذا typeof مفيد؟ (التطبيقات العملية)

الآن وقد عرفنا كيف يعمل، دعنا نرى لماذا نحتاجه في البرمجة اليومية:

  1. التحقق قبل تنفيذ عملية: تجنب الأخطاء مثل محاولة جمع نص مع رقم.
    let userInput = "120"; // هذا نص، ليس رقماً!
    
    if (typeof userInput === "number") {
        let total = userInput + 50; // آمن التنفيذ
        console.log("المجموع:", total);
    } else {
        console.log("الرجاء إدخال رقم صحيح.");
    }
    // النتيجة: "الرجاء إدخال رقم صحيح."
    
  2. تصحيح الأخطاء (Debugging): عندما لا يعمل الكود كما تتوقع، تحقق من أنواع المتغيرات للتأكد من أنها تحتوي على النوع الصحيح من البيانات.
  3. معالجة المدخلات: إذا كنت تستقبل بيانات من مستخدم أو من ملف، يمكنك استخدام typeof لفحصها ومعالجتها بشكل مناسب.

🚫 ما الذي لا يفعله typeof؟

من المهم أن تعرف حدود typeof حتى لا تتوقع منه أكثر مما يستطيع:

  • لا يفرق بين أنواع الكائنات المختلفة: كما رأينا، المصفوفة والكائن العادي كلاهما يعطيان نتيجة "object".
  • لا يخبرك إذا كان المتغير مُعرّفاً أم لا: إذا حاولت استخدام typeof على متغير غير مُعرّف أبداً، ستحصل على خطأ. هو يفحص القيمة فقط.
    console.log(typeof nonExistentVariable); // ❌ خطأ: nonExistentVariable is not defined
    

🎯 الخلاصة

  • typeof هو عامل (operator) يخبرك بنوع البيانات لأي قيمة.
  • يُرجع سلسلة نصية مثل "string"، "number"، "boolean"، "undefined"، أو "object".
  • استخدامه بسيط: typeof value أو typeof(value).
  • تذكّر أن null يُرجع "object" (وهذا استثناء).
  • typeof أداة أساسية للتحقق من صحة البيانات وتصحيح الأخطاء.