Number.isNaN()‎

من موسوعة حسوب

الدالة Number.isNaN()‎ تُحدِّد إذا كانت القيمة المُمرَّرة إليها هي NaN ومن النوع Number. وهذه الدالة هي نسخة أفضل من الدالة الأصلية العامة isNaN()‎.

البنية العامة

Number.isNaN(value)

value

القيمة التي ستُختبَر إن كانت NaN.

القيمة المعادة

قيمة منطقية Boolean تُشير إذا كانت القيمة هي NaN ومن النوع Number (وهي true) أم لا (وهي false).

الوصف

لمّا كانت نتيجة استخدام معاملي المقارنة == و === هي false عند مقارنة قيم NaN مع NaN، فأصبح من الضروري وجود الدالة Number.isNaN()‎، فحالة المقارنة السابقة تختلف كليًّا عن جميع أنواع المقارنة في JavaScript.

وبالمقارنة مع دالة isNaN()‎ العامة، لا تعاني الدالة Number.isNaN()‎ من مشكلة تحويل الوسيط المُمرَّر إليها إلى عدد؛ فهذا يعني أنَّ من الممكن الآن تمرير القيم التي كانت ستحوّل إلى NaN، لكنها لا تساوي NaN؛ وهذا يعني أنَّ القيم العددية والتي قيمتها NaN ستُعيد true عند استخدام هذه الدالة.

أمثلة

Number.isNaN(NaN);        // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0);      // true

// false:
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN('37');
Number.isNaN('37.37');
Number.isNaN('');
Number.isNaN(' ');

أما القيم الآتية فكانت ستُعيد true إذا استعملنا الدالة العامة isNaN()‎:

Number.isNaN('NaN');      // false
Number.isNaN(undefined);  // false
Number.isNaN({});         // false
Number.isNaN('blabla');   // false

تعويض نقص دعم المتصفحات

ستعمل الشيفرة الآتية لأنَّ القيمة NaN هي القيمة الوحيدة في JavaScript التي لا تساوي نفسها:

Number.isNaN = Number.isNaN || function(value) {     
    return value !== value;
}

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي 25 15 غير مدعومة نعم 9

على النقيض من متصفح IE، يدعم متصفح Edge هذه الميزة.

مصادر ومواصفات