Hàm Number.isNaN() trong Javascript
Phương thức Number.isNaN()
sẽ kiểm tra giá trị truyền vào có phải là một giá trị NaN(NOT-A-NUMBER) hay không.
Giá trị NaN là gì? Thực chất NaN là một giá trị số mà không phải số :), nghe có vẻ ẩn ý nhưng thực chất là vậy, nếu không tin các bạn có thể sử dụng đoạn mã script sau để kiểm tra : typeof(NaN)
kết quả sẽ trả về number, do đó NaN cũng thuộc kiểu number. Vậy còn vế thứ 2, ta cùng tìm hiểu một số cách để sinh ra giá trị NaN :
- Lấy số 0 chia cho số 0
- Lấy vô cùng (infinity) chia cho vô cùng (infinity)
- Nhân vô cùng (infinity) với số 0
- Bất kỳ phép tính toán nào trong đó NaN là một toán hạng
- Chuyển đổi một xâu non-numeric hoặc undefined về dạng number.
Vậy NaN là các giá trị số không xác định nhưng nó vẫn là số nên NaN thuộc kiểu number.
Trở lại với phương thức Number.isNaN()
, nó khác với hàm toàn cục isNaN()
, hàm isNaN() sẽ chuyển giá trị cần kiểm tra sang kiểu số rồi sau đó kiểm tra, phương thức Number.isNaN()
thì khác, nó sẽ trả về False với bất kì giá trị nào không thuộc kiểu number mà không ép kiểu cho nó.
Bài viết này được đăng tại [free tuts .net]
Cú pháp
Cú pháp: Number.isNaN(value)
Trong đó:
- value là giá trị cần kiểm tra.
Cách sử dụng
Ví dụ: sử dụng phương thức Number.isNaN()
để kiểm tra một số giá trị.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <h1>Học lập trình miễn phí tại freetuts.net</h1> <p>Click vào button để in mảng.</p> <button onclick="myFunction()">Run</button> <p id="demo"></p> <script> function myFunction() { var res = ""; res = res + "123 : " + ((Number.isNaN(123)) ? 'Là một số NaN' : 'Không phải là một số NaN') + "<br>"; res = res + "10/3 : " + ((Number.isNaN(10/3)) ? 'Là một số NaN' : 'Không phải là một số NaN') + "<br>"; res = res + "-4 : " + ((Number.isNaN(-4)) ? 'Là một số NaN' : 'Không phải là một số NaN') + "<br>"; res = res + "4,132 : " + ((Number.isNaN(4.132)) ? 'Là một số NaN' : 'Không phải là một số NaN') + "<br>"; res = res + "'123' : " + ((Number.isNaN('123')) ? 'Là một số NaN' : 'Không phải là một số NaN') + "<br>"; res = res + "'freetuts' : " + ((Number.isNaN('freetuts')) ? 'Là một số NaN' : 'Không phải là một số NaN') + "<br>"; res = res + "'1/6/2017' : " + ((Number.isNaN('1/6/2017')) ? 'Là một số NaN' : 'Không phải là một số NaN') + "<br>"; res = res + "Infinity : " + ((Number.isNaN(Infinity)) ? 'Là một số NaN' : 'Không phải là một số NaN') + "<br>"; res = res + "'0/0 :' " + ((Number.isNaN(0/0)) ? 'Là một số NaN' : 'Không phải là một số NaN') + "<br>"; res = res + "'Infinity*0' : " + ((Number.isNaN(Infinity*0)) ? 'Là một số NaN' : 'Không phải là một số NaN') + "<br>"; document.getElementById("demo").innerHTML = res; } </script> </body> </html>
123 : Không phải là một số NaN 10/3 : Không phải là một số NaN -4 : Không phải là một số NaN 4,132 : Không phải là một số NaN '123' : Không phải là một số NaN 'freetuts' : Không phải là một số NaN '1/6/2017' : Không phải là một số NaN Infinity : Không phải là một số NaN '0/0 :' Là một số NaN 'Infinity*0' : Là một số NaN
Tham khảo: w3schools.com