أنواع بيانات JavaScript: شرح Typeof

typeofهي كلمة رئيسية جافا سكريبت ستُرجع نوع المتغير عند استدعائه. يمكنك استخدام هذا للتحقق من صحة معلمات الوظيفة أو التحقق من تحديد المتغيرات. هناك استخدامات أخرى كذلك.

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

فمثلا:

var x = 12345; // number x = 'string'; // string x = { key: 'value' }; // object

كما ترى من المثال أعلاه ، يمكن للمتغير في JavaScript تغيير الأنواع خلال تنفيذ البرنامج. قد يكون من الصعب تتبع ذلك كمبرمج ، وهذا هو المكان الذي يكون فيه typeofالمشغل مفيدًا.

يقوم typeofالعامل بإرجاع سلسلة تمثل النوع الحالي للمتغير. يمكنك استخدامه بكتابة typeof(variable)أو typeof variable. بالعودة إلى المثال السابق ، يمكنك استخدامه للتحقق من نوع المتغير xفي كل مرحلة:

var x = 12345; console.log(typeof x) // number x = 'string'; console.log(typeof x) // string x = { key: 'value' }; console.log(typeof x) // object

يمكن أن يكون هذا مفيدًا للتحقق من نوع المتغير في دالة والمتابعة حسب الاقتضاء.

فيما يلي مثال لدالة يمكن أن تأخذ متغيرًا عبارة عن سلسلة أو رقم:

function doSomething(x) { if(typeof(x) === 'string') { alert('x is a string') } else if(typeof(x) === 'number') { alert('x is a number') } }

هناك طريقة أخرى typeofيمكن أن تكون مفيدة للمشغل وهي التأكد من تعريف المتغير قبل محاولة الوصول إليه في التعليمات البرمجية الخاصة بك. يمكن أن يساعد هذا في منع الأخطاء في البرنامج التي قد تحدث إذا حاولت الوصول إلى متغير لم يتم تعريفه.

function(x){ if (typeof(x) === 'undefined') { console.log('variable x is not defined'); return; } // continue with function here... }

typeofقد لا يكون ناتج عامل التشغيل دائمًا هو ما تتوقعه عند التحقق من وجود رقم.

يمكن أن تتحول الأرقام إلى القيمة NaN (ليس رقمًا) لأسباب متعددة.

console.log(typeof NaN); //"number"

ربما حاولت ضرب رقم في كائن لأنك نسيت الوصول إلى الرقم الموجود داخل الكائن.

var x = 1; var y = { number: 2 }; console.log(x * y); // NaN console.log(typeof (x * y)); // number

عند التحقق من وجود رقم ، لا يكفي التحقق من ناتج typeofرقم ، منذ ذلك الحين NaNأيضًا

اجتاز هذا الاختبار.

تتحقق هذه الوظيفة من وجود أرقام ، كما أنها لا تسمح NaNبتمرير القيمة.

function isNumber(data) { return (typeof data === 'number' && !isNan(data)); }

حتى لو اعتقدنا أن هذه طريقة مفيدة للتحقق من الصحة ، يجب أن نكون حذرين لأن جافا سكريبت بها بعض الأجزاء الغريبة وأحدها ناتج عن typeofتعليمات معينة. على سبيل المثال ، في جافا سكريبت العديد من الأشياء objectsستجدها فقط.

var x = [1,2,3,4]; console.log(typeof x) // object console.log(typeof null) // object

معلومات اكثر:

توثيق MDN لـ typeof