Javascript Function: Number.isNaN()

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ó.

Cú pháp

Cú phápNumber.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ị.

Code RUN
<!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>

Kết quả
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

Nguồn: freetuts.net