نحن نعلم أن JavaScript يوفر مشغل typeof ، وبالتالي فإن أسهل شيء يجب التفكير فيه هو استخدام typeof لتحديد ما إذا كان من نوع الرقم.
نسخة الكود كما يلي:
وظيفة isNumber (obj) {
إرجاع typeof obj === 'الرقم'
}
لا تواجه هذه الوظيفة مشكلة مع الأعداد الصحيحة وأرقام النقطة العائمة ، ولكنها تعود أيضًا إلى قيمة NAN ، مما يجعل الناس يشعرون بعدم الارتياح. بعد كل شيء ، لن يستخدم أحد NAN للقيام بعمليات حسابية بعد استخدام ISNumber للحكم.
ثم قم بتحسينه وحاول استخدام Object.prototype.toString.
نسخة الكود كما يلي:
وظيفة isNumber (obj) {
return Object.Prototype.ToString.call (OBJ) === '[رقم الكائن]' '
}
مثل الحكم typeof ، فإنه يعود أيضًا إلى NAN ، ولا يزال مقدار الكود كبيرًا ، وهو ليس النتيجة المرجوة. تحدد طريقة ToString.Call أن الصفيف (المصفوفة) ممكنة ، لكن الأرقام بعيدة المنال.
بعد مزيد من التحسن ، فإن قيمة NAN Isnan وظيفة للتعامل معها.
نسخة الكود كما يلي:
وظيفة isNumber (obj) {
إرجاع typeof obj === 'number' &&! isnan (OBJ)
}
هذه المرة ، إذا كان الرقم الوارد هو رقم غير مربع (نان أو قيمة يمكن تحويلها إلى NAN) ، فسوف يعود خطأ.
نسخة الكود كما يلي:
وظيفة isNumber (obj) {
إرجاع typeof obj === 'number' &&! isnan (OBJ)
}
isnumber (1) // صحيح
isNumber (1.2) // صحيح
isnumber (nan) // false
isnumber (parseint ('a')) // false
حسنًا ، هذا العدد جيد ، ولكن هناك ما يعادلها ، استخدام Isfinite آخر للحكم
نسخة الكود كما يلي:
وظيفة isNumber (obj) {
إرجاع typeof obj === 'number' && isfinite (OBJ)
}
حتى الآن ، فإن الحكم العددي لأقصر رمز هو الحكم الثالث المذكور في هذه المقالة التي تستخدم وظيفة Isnan. تم إطلاق أقصر رمز الحكم العددي في العالم أدناه
نسخة الكود كما يلي:
وظيفة isNumber (obj) {
إرجاع OBJ === +OBJ
}
بالنسبة للأعداد الصحيحة ، يعود رقم النقطة العائمة بشكل صحيح ، وبالنسبة للقيام أو القيم التي يمكن تحويلها إلى NAN ، خاطئة.
لا تفهم ، أليس كذلك؟ gu ~~ ()
قال البستانيين إن هذا ليس أقصر رمز رقمي في العالم ، ويمكن تغيير المعلمة OBJ إلى حرف واحد. (⊙o⊙) أنت على حق.
تعلم من مثال واحد وأقصر حكم يتم تقديمه أيضًا إلى أقصر استخدام لميزات اللغة الديناميكية JS (تحويل النوع التلقائي الداخلي عند تشغيل المشغل).
نسخة الكود كما يلي:
// القاضي سلسلة
وظيفة isString (obj) {
إرجاع OBJ === OBJ+''
}
// القاضي نوع منطقي
وظيفة Isboolean (OBJ) {
إرجاع OBJ === !! obj
}