isNaN()用来判断一个变量是否为非数字的类型,返回 非数字true 则返回 false isNaN(12) == false

img

isNaN()用来判断一个变量是否为非数字的类型,返回 非数字true 则返回 false
isNaN(12) == false ,12是数字类型的返回false
isNaN('12') == false ,返回false
alert('12' + 12) 结果为什么是 1212

因为 做运算时候 但凡有字符串参与的加法运算 会把两边的数据 隐式转换为字符串 所以 他就拼接起来了

减法的话 就不一样了 会隐式转换成数字运算

1.isNaN() 函数会将测试值转换为数字,然后对其进行操作 所以isNaN('12') 就是把字符串12先转换为了数字
2. 为什么 '12' + 12 = 1212?
楼上说隐式转换拼接 并没任何问题,我这里补充一下原理
因为ECMAScript中字符串是不可变的,也就是说字符串一旦声明就不能改变了,字符串和数字相加就执行了拼接操作,要改变只能销
毁原来的值,再重新赋值

除了楼上提出的问题,还有一点值得注意:isNaN()和我们最开始的理解是有一点偏差的,isNaN()输出其实是根据参数是否能被Number()合法转化为数字。例如数字字符串或者布尔值。因此isNaN不能完全判断一个值是否为数字。