Ảnh của Erik-Jan Leusink trên unplash
JavaScript có một số giá trị lỗi được tạo từ một số tính toán không hợp lệ.
Trong bài viết này, chúng tôi sẽ xem xét họ và tài sản của họ.
Nan
Number('foo')4 có nghĩa là không phải là một số. Mặc dù tên, JavaScript vẫn coi đó là một số.
Nếu chúng ta viết:
typeof NaNNếu trả về Number('foo')5.
Nó đã trả lại bất cứ khi nào chúng tôi cố gắng chuyển đổi một cái gì đó không có nội dung số thành một số có chức năng Number('foo')6.
Do đó, nếu chúng ta viết:
Number('foo')Chúng tôi nhận được Number('foo')4 trở lại.
Ngoài ra, Number('foo')4 là lợi nhuận cho các hoạt động toán học mà không hợp lệ.
Ví dụ, nếu chúng ta có:
Math.log(-2)Sau đó, chúng tôi nhận được Number('foo')4 trở lại.
Nếu chúng ta sử dụng Math.log(-2)0 với số âm như sau:
Math.sqrt(-1)Chúng tôi cũng nhận được Number('foo')4 trở lại.
Bất kỳ tính toán nào liên quan đến Number('foo')4 cũng sẽ trả về Number('foo')4. Các biểu thức sau:
NaN - 37 ** NaN
Cả hai sẽ trở lại Number('foo')4.
Lưu ý rằng Number('foo')4 không bằng nhau. Ví dụ, cả hai:
NaN == NaNvà
NaN === NaNTrả lại Math.log(-2)6.
isnan
Để kiểm tra Number('foo')4, chúng ta có thể sử dụng các hàm Math.log(-2)8 hoặc Math.log(-2)9.
Ví dụ: chúng ta có thể sử dụng nó như sau:
isNaN(Math.sqrt(-1))Sau đó, chúng tôi nhận được Math.sqrt(-1)0.
Nếu chúng ta viết:
isNaN(2)Nếu trả về Number('foo')5.
Nó đã trả lại bất cứ khi nào chúng tôi cố gắng chuyển đổi một cái gì đó không có nội dung số thành một số có chức năng Number('foo')6.
Do đó, nếu chúng ta viết:
Nếu chúng ta viết:
[1, NaN].indexOf(NaN)Nếu trả về Number('foo')5.
Nó đã trả lại bất cứ khi nào chúng tôi cố gắng chuyển đổi một cái gì đó không có nội dung số thành một số có chức năng Number('foo')6.
Do đó, nếu chúng ta viết:
Chúng tôi nhận được Number('foo')4 trở lại.
Ngoài ra, Number('foo')4 là lợi nhuận cho các hoạt động toán học mà không hợp lệ.
Ví dụ, nếu chúng ta có:NaN - 3
7 ** NaN7
Sau đó, chúng tôi nhận được Number('foo')4 trở lại.
Nếu chúng ta sử dụng Math.log(-2)0 với số âm như sau:
Therefore:
Number('foo')0Chúng tôi cũng nhận được Number('foo')4 trở lại.
Bất kỳ tính toán nào liên quan đến Number('foo')4 cũng sẽ trả về Number('foo')4. Các biểu thức sau:
Cả hai sẽ trở lại Number('foo')4.
Lưu ý rằng Number('foo')4 không bằng nhau. Ví dụ, cả hai:
- và
- Trả lại Math.log(-2)6.
- isnan
- Để kiểm tra Number('foo')4, chúng ta có thể sử dụng các hàm Math.log(-2)8 hoặc Math.log(-2)9.
- Ví dụ: chúng ta có thể sử dụng nó như sau:
- Sau đó, chúng tôi nhận được Math.sqrt(-1)0.
- Sau đó, chúng tôi nhận được Math.log(-2)6 trở lại.
- Tìm Number('foo')4 trong mảng
- Một số phương pháp mảng có thể tìm thấy Number('foo')4. Chẳng hạn, Math.sqrt(-1)4 không bắt được Number('foo')4.
- Chúng tôi nhận được Math.sqrt(-1)6 trở lại. Điều này có nghĩa là nó có thể tìm thấy Number('foo')4.
Tuy nhiên, các phương pháp khác như Math.sqrt(-1)8, Math.sqrt(-1)9 và NaN - 3
7 ** NaN0 có thể tìm thấy Number('foo')4.
Vì vậy, NaN - 3
7 ** NaN2 trở lại Math.sqrt(-1)0.
NaN - 3
7 ** NaN4 Trả về 1.
NaN - 3
7 ** NaN5 Trả về Number('foo')4.
Ảnh của Nathan Riley trên unplash
NaN - 3
7 ** NaN7 được trả về khi số quá lớn.
Ví dụ: nếu NaN - 3
7 ** NaN9 trả về một giá trị lớn hơn giá trị lớn nhất mà một số JavaScript có thể là, thì chúng tôi sẽ nhận được NaN - 3
7 ** NaN7 được trả về.
Trả về NaN - 3
7 ** NaN7 vì nó lớn hơn số JavaScript tối đa.
NaN == NaN2 Trả về NaN == NaN3.
Giá trị của NaN - 3
7 ** NaN7 là NaN == NaN5.
Nó hoạt động hơi khác so với vô cực toán học:
NaN == NaN6Multiplied bởi bất kỳ giá trị dương nào là NaN == NaN7