在ECMAScript中有一个isNaN()函数,再说这个函数之前,会先说一下NaN:
(1)NaN:非数值(not a number),是一个特殊的数值,用来表示本来要返回数值的操作数未返回数值的情况。在ECMAScript中,任何数值除以非数值会返回NaN,不会影响其他代码的执行。
(2)NaN有两个特点:
- 任何与NaN相关的操作都会返回NaN
- NaN与任何的值都不相等,而且它与本身也不相等。
(3)isNaN()函数 - 作用:可以接收一个参数,来确定该参数是否“不是数值”。不是数值就会返回true,是数值就会返回false
- 流程:当其接收一个参数后,会尝试把这个参数转换为数值,某些不是数值的值也会转换为数值,任何不能被转换为数值的值都会导致这个函数返回true
- 该函数也适用于对象,但是在对象调用该函数的时候,会先调用该对象的valueOf()函数,然后确定该方法的返回值是否可以转为数值,如果不可以,则基于这个返回值再调用toString()方法,再次测试返回值。
测试代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
alert(isNaN(NaN));//true
alert(isNaN(12));//false
alert(isNaN("13"));//false
alert(isNaN("black"));//true
alert(isNaN(false));//false
</script>
</head>
<body>
</body>
</html>