--- title: NaN slug: Web/JavaScript/Reference/Global_Objects/NaN tags: - JavaScript - Tham khảo - Thuộc tính translation_of: Web/JavaScript/Reference/Global_Objects/NaN ---
Thuộc tính global NaN
có giá trị đại diện cho khái niệm Not-A-Number (Không-phải-Số).
{{js_property_attributes(0,0,0)}}
NaN
NaN
là thuộc tính của đối tượng global.
Giá trị khởi tạo của NaN
là Not-A-Number — giống như giá trị của {{jsxref("Number.NaN")}}. Với các trình duyệt hiện đại, NaN
không thể cấu hình được, không có thuộc tính được-viết. Kể cả khi được phép thì vẫn phải tránh việc ghi đè lên nó.
Người ta hiếm khi dùng NaN
trong viết chương trình. Nó được dùng làm giá trị trả về khi việc tính toán của các hàm {{jsxref("Math")}} thất bại (Math.sqrt(-1)
) hoặc khi hàm phân tích phải dữ liệu số sai (parseInt("là lá la")
).
NaN
Không thể thực hiện phép so sánh bằng (thông qua ==
, !=
, ===
, và !==
) NaN
với bất kỳ giá trị nào khác, bao gồm cả một giá trị NaN
khác. Hãy dùng {{jsxref("Number.isNaN()")}} hoặc {{jsxref("Global_Objects/isNaN", "isNaN()")}} để xác định rõ ràng đó có phải là NaN
hay không. Hoặc làm thử một phép so sánh bản thân: NaN
, và chỉ NaN
, sẽ so sánh không cân bằng với chính nó.
NaN === NaN; // false (sai) Number.NaN === NaN; // false isNaN(NaN); // true (đúng) isNaN(Number.NaN); // true function valueIsNaN(v) { return v !== v; } valueIsNaN(1); // false valueIsNaN(NaN); // true valueIsNaN(Number.NaN); // true
Tuy nhiên, lưu ý rằng có khác biệt giữa isNaN()
và Number.isNaN()
: isNaN()
sẽ trả về giá trị true
(đúng) nếu như giá trị hiện tại là NaN
hoặc nó sẽ thành NaN
sau khi bị ép số hóa dữ liệu, còn với Number.isNaN()
thì dữ liệu trả về là true
chỉ khi giá trị hiện tại là NaN
.
isNaN('hello world'); // trả về giá trị 'true'. Number.isNaN('hello world'); // trả về giá trị 'false'.
Thông số kỹ thuật | Trạng thái | Chú thích |
---|---|---|
{{SpecName('ES1')}} | {{Spec2('ES1')}} | Định nghĩa đầu tiên. Được đưa vào JavaScript 1.3 |
{{SpecName('ES5.1', '#sec-15.1.1.1', 'NaN')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-value-properties-of-the-global-object-nan', 'NaN')}} | {{Spec2('ES6')}} | |
{{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-nan', 'NaN')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.NaN")}}