Tôi đã thấy điều này trong nguồn của một lib và bị nhầm lẫn. Tôi nghĩ rằng, nó luôn luôn đánh giá 'false
'. Ý nghĩa của việc sử dụng nó là gì?Kiểm tra biểu thức 'v! == v' là gì?
Trả lời
Nó kiểm tra xem v
là NaN
:
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
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"))
.
- 1. foreach: "in" v. "Là"
- 2. gì là việc sử dụng "v = 747" vào cuối /site_media/base.css?v=747"
- 3. kiểm tra đáp ứng cookie với RSpec v.1
- 4. Ký tự unicode HTML cho chữ V "đúng" là gì?
- 5. phương thức init() v không tìm thấy
- 6. Tính "v^TA v" cho một ma trận của vectơ v
- 7. Phusion Passenger v. WEBrick
- 8. OLEDB v/s ODBC
- 9. Tương đương của Python là "perl -V"
- 10. atol() v/s. strtol()
- 11. MongoDB v/s Redis
- 12. AuthorizeAttribute v Application_AuthenticateRequest
- 13. jquery v javascript
- 14. Android: Java v. Python
- 15. Tại sao Seq [V] không mở rộng Bản đồ [Int, V] cũng như không đặt [V] mở rộng Bản đồ [V, Bool]?
- 16. Python:. Mảng v Danh sách
- 17. Chuyển đổi bộ <Map.Entry <K, V>> thành HashMap <K, V>
- 18. Bảng băm v/s Cây
- 19. Mẫu I-V bằng Python
- 20. Chữ "() V" có nghĩa gì trong chữ ký của lớp?
- 21. Tại sao sử dụng trình tạo SQL? Arel v. Phần tiếp theo v. T-SQL
- 22. var {u, v, w} = x; có nghĩa là trong Javascript?
- 23. Tại sao độ phức tạp của BFS O (V + E) thay vì O (V * E)?
- 24. Các nút Eclipse như Step in, Step out, resume v..v .. không hoạt động
- 25. php.ini ở đâu trong php v.5.4.6?
- 26. Đường dẫn đến Powershell.exe (v 2.0)
- 27. Gọi chức năng ảo từ bảng V
- 28. Không thể dán (Command + V) vào NSTextField
- 29. V đứng trong phần mở rộng của tệp Coq là gì?
- 30. Magento, thu khí kỳ diệu v getData
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 –
@OttoAllmendinger Khá thú vị.Thanks for the info. – Engineer