isNaN()【用于检查其参数是否是非数字值】

9.png
因为会隐式调用Number()函数
语雀内容
所以它的不好用主要体现在一些特殊的情况如下:

  • 1、数字形式的字符串。例如 “123”、”-3.14”,虽然是字符串型,但被 isNaN() 判为数,返回 false。(”12,345,678”,”1.2.3” 这些返回 true)
  • 2、空值。null、空字符串””、空数组[],都可被Number()合法的转为0,于是被isNaN认为是数,返回false。(undefined、空对象{}、空函数等无法转数字,返回true)
  • 3、布尔值。Number(true)=1,Number(false)=0,所以isNaN对布尔值也返回false。
  • 4、长度为 1 的数组。结果取决于其中元素,即:isNaN([a])=isNaN(a),可递归。例如isNaN([[“1.5”]])=false。
  • 5、数字特殊形式。例如”0xabc”、”2.5e+7”,这样的十六进制和科学计数法,即使是字符串也能转数字,所以也返回false。

也就是该函数实质上是判断一个值能否被 Number() 合法地转化成数字。