Thuộc tính toàn cục NaN trong JavaScript đại diện cho giá trị "Không phải là Số" (Not-A-Number). Giá trị này được trả về khi:
- Các hàm toán học thất bại (ví dụ:
Math.sqrt(-500)) - Phân tích chuỗi thành số thất bại (ví dụ:
parseFloat("test"))
NaN không bằng bất kỳ giá trị nào, kể cả chính nó, khi so sánh bằng ==, !=, ===, hay !==.
Cách kiểm tra chính xác
Phải sử dụng phương thức Number.isNaN():
let a = Math.sqrt(-500); console.log(Number.isNaN(a)); // true
Sự khác biệt giữa isNaN() và Number.isNaN()
isNaN(): Trả vềtruenếu giá trị hiện là NaN hoặc sẽ thành NaN sau khi ép kiểu sang số.Number.isNaN(): Chỉ trả vềtruenếu giá trị hiện tại chính là NaN.
isNaN('hello world'); // true
Number.isNaN('hello world'); // false
Lưu ý: Luôn ưu tiên Number.isNaN() để tránh kết quả sai do ép kiểu ngầm.