ฟังก์ชัน isFinite
ฟังก์ชัน isFinite สำหรับตรวจสอบพารามิเตอร์
ว่าเป็นตัวเลขที่มีขอบเขตจำกัดหรือไม่ (นั่นคือ
ไม่ใช่สตริง, อาร์เรย์ ฯลฯ และไม่ใช่ค่าอนันต์
บวกหรือลบ)
วิธีการทำงานของฟังก์ชันนี้คือ มันจะคืนค่า false,
ถ้าตัวเลขนั้นเป็นค่าอนันต์บวกหรือลบ
(นั่นคือ Infinity)
หรือไม่ใช่ตัวเลข (นั่นคือ NaN),
ในกรณีอื่นๆ จะคืนค่า true
นั่นคือ สตริง, อาร์เรย์ ฯลฯ จะถูกแปลง
เป็น NaN และจะคืนค่า false ตามลำดับ
อย่างไรก็ตาม มี ข้อยกเว้น: สตริงว่าง
'' คืนค่า true, สตริงที่ประกอบด้วยช่องว่าง ' '
ก็คืนค่า true เช่นกัน, null
คืนค่า true, สำหรับค่าตัวแปร true และ false
ก็จะคืนค่า true เช่นกัน
สิ่งนี้เกิดขึ้นเพราะว่าค่าเหล่านั้น
ถูกแปลงเป็นตัวเลข, ไม่ใช่เป็น NaN
หากคุณต้องการตรวจสอบตัวเลขที่แม่นยำจริงๆ
ซึ่งไม่นับสตริงที่ประกอบด้วยช่องว่าง,
ค่าบูลีน และค่าพิเศษ เป็นตัวเลข
- ให้ใช้ฟังก์ชัน isNumeric ต่อไปนี้:
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
};
มาดูกันว่ามันทำงานอย่างไร
ฟังก์ชัน isFinite แปลงพารามิเตอร์
เป็นตัวเลขและคืนค่า true ถ้ามันไม่ใช่ Infinity,
-Infinity หรือ NaN
ดังนั้น ด้านขวาจะกรองค่า ที่ไม่ใช่ตัวเลข อย่างชัดเจน
แต่จะปล่อยให้ค่าดังกล่าว
เช่น true, false, null, สตริงว่าง '' และ
สตริงที่ประกอบด้วยช่องว่าง ผ่านไป, เพราะพวกมันสามารถแปลงเป็นตัวเลขได้อย่างถูกต้อง
เพื่อกรองค่าเหล่านั้นออก จำเป็นต้องมีฟังก์ชัน
parseFloat,
ซึ่งสำหรับ true, false, null, '', ' '
จะคืนค่า NaN นี่คือวิธีการทำงานของฟังก์ชัน parseFloat: มัน
แปลงพารามิเตอร์เป็นสตริง, เช่น true,
false, null กลายเป็น 'true', 'false',
'null', จากนั้นอ่านตัวเลขจากสตริงนั้น
โดยที่สตริงว่างและสตริงที่ประกอบด้วยช่องว่าง
จะให้ NaN จากนั้นผลลัพธ์ของ parseFloat จะถูกประมวลผล
โดยใช้ !isNaN,
เพื่อให้ได้ true หรือ false แทน NaN
ผลลัพธ์คือ ทุกอย่างจะถูกกรองออก ยกเว้นสตริงที่เป็นตัวเลข
และตัวเลขทั่วไป
ไวยากรณ์
isFinite(ค่า);
ตัวอย่าง
ตอนนี้ isFinite จะแสดง true,
เนื่องจากพารามิเตอร์เป็นตัวเลข:
let num = 3;
console.log(isFinite(num));
ผลลัพธ์จากการรันโค้ด:
true
ตัวอย่าง
ตอนนี้ isFinite จะแสดง false,
เนื่องจากพารามิเตอร์ไม่ใช่ตัวเลข:
let num = 'abcde';
console.log(isFinite(num));
ผลลัพธ์จากการรันโค้ด:
false
ตัวอย่าง
ตอนนี้ isFinite จะแสดง false,
เนื่องจากพารามิเตอร์เป็นค่าอนันต์:
let num = Infinity;
console.log(isFinite(num));
ผลลัพธ์จากการรันโค้ด:
false
ตัวอย่าง
ตอนนี้ isFinite จะแสดง false,
เนื่องจาก 1/0 - นั่นคือ Infinity
(ค่าอนันต์):
let num = 1 / 0;
console.log(isFinite(num));
ผลลัพธ์จากการรันโค้ด:
false
ตัวอย่าง
ตอนนี้ isFinite จะแสดง true,
เนื่องจากสตริงว่าง ซึ่งไม่ใช่ตัวเลข,
เป็นข้อยกเว้น:
let num = '';
console.log(isFinite(num));
ผลลัพธ์จากการรันโค้ด:
true