ใช้ isNaN() ตรวจสอบว่าค่า ไม่ใช่ ตัวเลข (Not-a-Number) คืน true ถ้าไม่ใช่ตัวเลข, false ถ้าเป็นตัวเลข
ตัวอย่างจากบทความ
<!DOCTYPE html>
<html>
<body>
<button onclick="display()">Check</button>
<p id="test"></p>
<script>
function display() {
var a = "";
a = a + isNaN(6234) + ": 6234<br>"; // false: 6234
a = a + isNaN(-52.1) + ": -52.1<br>"; // false: -52.1
a = a + "ค่าด้านบนคืน false หมายถึงเป็นตัวเลข";
document.getElementById("test").innerHTML = a;
}
</script>
</body>
</html>
พฤติกรรมของ isNaN() (Global isNaN)
⚠️ มีพฤติกรรมแปลก: จะแปลง argument เป็น Number ก่อนตรวจสอบ
| Input | isNaN() | หมายเหตุ |
|---|---|---|
| 123 | false | เป็นตัวเลข |
| "123" | false | แปลงเป็น 123 ได้ |
| "hello" | true | แปลงเป็น NaN |
| undefined | true | Number(undefined) = NaN |
| {} | true | Number({}) = NaN |
| [] | false | Number([]) = 0 ⚠️ |
| [123] | false | Number([123]) = 123 ⚠️ |
| null | false | Number(null) = 0 ⚠️ |
| true | false | Number(true) = 1 ⚠️ |
| false | false | Number(false) = 0 ⚠️ |
Number.isNaN() (ES6 - แนะนำ)
ไม่แปลงค่า ตรวจสอบเฉพาะ NaN จริงๆ
| Input | Number.isNaN() |
|---|---|
| NaN | true |
| "hello" | false |
| undefined | false |
| {} | false |
| [] | false |
| null | false |
| 123 | false |
// Global isNaN (legacy)
isNaN("hello"); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN([]); // false ⚠️
// Number.isNaN (ES6 - recommended)
Number.isNaN("hello"); // false
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN([]); // false
Number.isNaN(NaN); // true ✓
ฟังก์ชันตรวจสอบตัวเลขที่สมบูรณ์
function isNumber(value) {
return typeof value === 'number' && !isNaN(value) && isFinite(value);
}
function isInteger(value) {
return Number.isInteger(value);
}
// ตัวอย่าง
isNumber(123); // true
isNumber("123"); // false (เป็น string)
isNumber(NaN); // false
isNumber(Infinity); // false
isNumber(null); // false
isInteger(10); // true
isInteger(10.5); // false
isInteger("10"); // false
สรุป
- ใช้ Number.isNaN() แทน isNaN() (ES6+)
- ใช้ typeof value === 'number' && Number.isFinite(value) สำหรับตรวจสอบตัวเลขที่ถูกต้อง
- ใช้ Number.isInteger() สำหรับตรวจสอบจำนวนเต็ม