سلام. چک کردن نوع داده ای یکی از کارهای پر تکرار در برنامه نویسی میتونه باشه که این کار در جاوا اسکریپت معمولا با اپراتور typeof انجام میشه که خیلی اوقات اونطوری که ما انتظار داریم کار نمیکنه. یه مثال میزنم. شما انتظار دارید نتیجه این بررسی چی باشه؟

typeof null;

اگر تا حالا تست نکردید قطعا میگین که خوب معلومه جوابش باید null باشه. اما جاوا اسکریپت به شما میگه این یه آبجکته! حالا ما کاری نداریم که این یه اشتباه از طرف برنامه نویسای جاوا اسکریپت بوده یا هر چیز دیگه، اینجا میخوام چند روش خوب برای چک کردن نوع داده ای یک متغیر رو بهتون معرفی کنم.

چک کردن string

باید بدونید زمانی که شما از کلمه کلیدی new برای ساختن یه String استفاده میکنید دیگه نوع اون در حقیقت یه object هست. پس typeof به شما object نشون میده. برای حل این مشکل با instanceof هم بررسی بشه:

// Returns if a value is a string
function isString (value) {
return typeof value === 'string' || value instanceof String;
};

چک کردن number

برای اعداد ما نیاز داریم تا isFinite رو هم چک کنیم چون احتمال داره عدد +بی نهایت -بی نهایت و یا NaN باشه.

// Returns if a value is really a number
function isNumber (value) {
return typeof value === 'number' && isFinite(value);
};

چک کردن array

تو جاوا اسکریپت آرایه ها در حقیقت نوع خاصی از آبجکت ها هستن پس مطمئن باشید که typeof به شما array رو در خروجی برای آرایه ها نشون نمیده. تو این موارد هم میشه از روش پایین استفاده کرد:

// Returns if a value is an array
function isArray (value) {
return value && typeof value === 'object' && value.constructor === Array;
};

البته ES5 یه متد واسه این این کار داره:

// ES5 actually has a method for this (ie9+)
Array.isArray(value);

چک کردن function

هر چند توابع در تو جاوا اسکریپت در حقیقت از نوع object هستن. اما احتمالا برای راحتی کار برنامه نویس ها تصمیم گرفتن خروجی توابع رو همون function نشون بدن.

// Returns if a value is a function
function isFunction (value) {
return typeof value === 'function';
};

چک کردن object

بیشتر چیزا تو جاوا اسکریپت یه نوع آبجکت هستند. برای بررسی object ها از این روش استفاده کنید:

// Returns if a value is an object
function isObject (value) {
return value && typeof value === 'object' && value.constructor === Object;
};

چک کردن null و undefined

همونطور که در ابتدا توضیح دادم typeof در مورد nullهمیشه اشتباه میکنه. برای این ها هم از این روش استفاده کنید:

// Returns if a value is null
function isNull (value) {
return value === null;
};

// Returns if a value is undefined
function isUndefined (value) {
return typeof value === 'undefined';
};

چک کردن boolean

typeof با boolean مشکلی نداره

// Returns if a value is a boolean
function isBoolean (value) {
return typeof value === 'boolean';
};

امیدوارم مفید و کاربردی باشه براتون. منبع اینجا.

آخرین ویرایش: 11-03-2018 ساعت 16:50، توسط Reza