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ố).
Property attributes of NaN |
|
---|---|
Writable | no |
Enumerable | no |
Configurable | no |
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Cú pháp
NaN
Mô tả
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 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 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")
).
Kiểm thử phép so sánh 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 Number.isNaN()
hoặc 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
Thông số kỹ thuật | Trạng thái | Chú thích |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Định nghĩa đầu tiên. Được đưa vào JavaScript 1.3 |
ECMAScript 5.1 (ECMA-262) The definition of 'NaN' in that specification. |
Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'NaN' in that specification. |
Standard | |
ECMAScript (ECMA-262) The definition of 'NaN' in that specification. |
Living Standard |
Tính tương thích trên trình duyệt
BCD tables only load in the browser