Sử dụng isNaN()
Hàm isNaN(value) trả về true nếu giá trị không phải là số (Not-a-Number), ngược lại trả false.
Ví dụ
<!DOCTYPE html>
<html>
<body>
<button onclick="display()">Check</button>
<p id="test"></p>
<script>
function display() {
var a = "";
a += isNaN(6234) + ": 6234<br>"; // false
a += isNaN(-52.1) + ": -52.1<br>"; // false
a += "Giá trị trên trả về false → là số.";
document.getElementById("test").innerHTML = a;
}
</script>
</body>
</html>
Kết quả
false: 6234 false: -52.1 Giá trị trên trả về false → là số.
Cạm bẫy của isNaN()
isNaN() cố ép kiểu đối số sang số trước khi kiểm tra, dẫn đến hành vi kỳ lạ:
isNaN("hello") // true
isNaN("") // false (rỗng → 0)
isNaN(null) // false (null → 0)
isNaN(undefined) // true
Giải pháp hiện đại: Number.isNaN()
Number.isNaN() không ép kiểu, chỉ trả true cho chính xác NaN:
Number.isNaN(NaN) // true
Number.isNaN("hello") // false
Number.isNaN(undefined) // false
Khuyên dùng Number.isNaN() để tránh bug ngầm.