เรารู้ว่า JavaScript มีตัวดำเนินการ typeof ดังนั้นสิ่งที่ง่ายที่สุดที่ควรคิดคือใช้ typeof เพื่อตรวจสอบว่าเป็นประเภทตัวเลขหรือไม่
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น isnumber (obj) {
return typeof obj === 'number'
-
ฟังก์ชั่นนี้ไม่มีปัญหากับจำนวนเต็มและหมายเลขลอยตัว แต่มันก็กลับมาเป็นจริงสำหรับค่า NAN ซึ่งทำให้ผู้คนรู้สึกไม่สบายใจ ท้ายที่สุดไม่มีใครจะใช้ NAN ในการดำเนินการทางคณิตศาสตร์หลังจากใช้ ISNumber เพื่อตัดสิน
จากนั้นปรับปรุงและลองใช้ Object.prototype.toString
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น isnumber (obj) {
return object.prototype.toString.call (obj) === '[หมายเลขวัตถุ]'
-
เช่นเดียวกับการตัดสินประเภทของมันยังส่งคืนจริงสำหรับ NAN และปริมาณของรหัสยังคงมีขนาดใหญ่ซึ่งไม่ใช่ผลลัพธ์ที่ต้องการ ToString.Call Method กำหนดว่าอาร์เรย์ (อาร์เรย์) เป็นไปได้ แต่ตัวเลขไม่สามารถเข้าถึงได้
หลังจากการปรับปรุงเพิ่มเติมฟังก์ชั่น NAN ISNAN จะจัดการกับ
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น isnumber (obj) {
return typeof obj === 'number' &&! isnan (obj)
-
เวลานี้หากหมายเลขขาเข้าไม่ใช่หมายเลข (NAN หรือค่าที่สามารถแปลงเป็น NAN) มันจะส่งคืนเท็จ
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น isnumber (obj) {
return typeof obj === 'number' &&! isnan (obj)
-
isnumber (1) // true
isnumber (1.2) // true
isnumber (nan) // false
isnumber (parseint ('a')) // false
นี่คือจำนวนที่ดี แต่มีอีกอย่างที่เทียบเท่ากับการใช้ isfinite เพื่อตัดสิน
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น isnumber (obj) {
return typeof obj === 'number' && isfinite (obj)
-
ถึงตอนนี้การตัดสินเชิงตัวเลขของรหัสที่สั้นที่สุดคือบทความที่สามที่กล่าวถึงในบทความนี้ที่ใช้ฟังก์ชัน ISNAN รหัสการตัดสินเชิงตัวเลขที่สั้นที่สุดในโลกเปิดตัวด้านล่าง
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น isnumber (obj) {
ส่งคืน obj === +obj
-
สำหรับจำนวนเต็มหมายเลขจุดลอยตัวจะส่งคืนจริงและสำหรับน่านหรือค่าที่สามารถแปลงเป็นน่าน, เท็จ
ไม่เข้าใจใช่มั้ย gu ~~ ()
ชาวสวนกล่าวว่านี่ไม่ใช่รหัสตัวเลขที่สั้นที่สุดในโลกและพารามิเตอร์ OBJ สามารถเปลี่ยนเป็นตัวละครหนึ่งตัวได้ (⊙o⊙) คุณพูดถูก
เรียนรู้จากตัวอย่างหนึ่งและการตัดสินที่สั้นที่สุดจะได้รับการใช้งานที่สั้นที่สุดของคุณสมบัติภาษา JS Dynamic (การแปลงประเภทอัตโนมัติภายในเมื่อการทำงานของผู้ปฏิบัติงาน)
การคัดลอกรหัสมีดังนี้:
// ผู้พิพากษาสตริง
ฟังก์ชั่น isstring (obj) {
ส่งคืน obj === obj+''
-
// ผู้ตัดสินประเภทบูลีน
ฟังก์ชั่น Isboolean (obj) {
ส่งคืน obj === !! obj
-