2012-07-11 26 views

Trả lời

6

Nó kiểm tra xem vNaN:

if(v !== v){ 
    //'v' is NaN here 
} 

Từ standard:

Một cách đáng tin cậy cho ECMAScript mã để kiểm tra xem một giá trị X là một NaN là một biểu thức có dạng X! == X. Kết quả sẽ đúng nếu và chỉ khi X là NaN.

Tại sao không chỉ sử dụng tích hợp isNaN()?

Câu trả lời rất đơn giản: "isNaN() không đủ tin cậy.". Dưới đây là các trường hợp, khi isNaN() sẽ thất bại:

isNaN("NaN")   //true 
isNaN(undefined)  //true 
+0

Rõ ràng là cách để làm điều đó trong ES6 là 'Object.is (obj, NaN) ': http://wiki.ecmascript.org/doku.php ? id = harmony: egal –

+0

@OttoAllmendinger Khá thú vị.Thanks for the info. – Engineer

1

Nó kiểm tra cho "Not A Number": NaN !== NaN bằng true

Từ MDN:

Giá trị ban đầu của NaN là Không-A-Số - giống như giá trị của Số. NaN. Trong các trình duyệt hiện đại, NaN là thuộc tính không thể định cấu hình, không thể ghi. Ngay cả khi điều này không đúng, hãy tránh ghi đè.

Khá hiếm khi sử dụng NaN trong chương trình. Nó là giá trị trả về khi hàm Math không hoạt động (Math.sqrt(-1)) hoặc khi một hàm cố gắng để phân tích cú pháp một số không thành công (parseInt("blabla")).

Các vấn đề liên quan