首页 > JavaScript isNaN 方法的问题

JavaScript isNaN 方法的问题

javascriptvar foo = "55";
var myNumber = Number(foo);
if(isNaN(foo)){
  console.log("It is not a number");
}

我原本以为输出是It is not a number,但是输出是undefined,编程新手求大神解答。


由于NaN根本就不成立,if语句没有执行,所以控制台并没有打印!


输出 "undefined" 是因为你这段代码最后执行的一句没有返回值。

foo 的值是 "55",在需要它作为数字参与计算的时候,它会自动转换成数字 55,肯定不是 NaN,所以 if 中的语句未执行。


大家講的都是原理, 我給你寫一個例子.
看你的表達意思是, 檢查這個variable是不是Number.
直接 a === +a, 這裡的 +a 是吧a 轉換為Number, 然後和原來的a比較.

例子

node> a = 10
10
> a == +a
true
> a = '10'
'10'
> a == +a
true
> a === +a
false
>

一楼已经说了,补充下,你看到那个undefined是整个表达式最后的值,并不是console.log打印出来的。例如你在控制台输入foo会显示"55",你输入var a = 1会显示undefined,输入a = 2会显示2,输出的都是表达式本身的返回值


看这里: isNaN()

参数foo虽然是字符串, 但是在函数中会强制转成Number, 转换后就是数字55, 这个不是NaN, 所以没有打印It is not a number.


console.log("55"==55) //true
console.log("55"===55) //false


把它写全了再执行就明白了

var foo = "55";
var myNumber = Number(foo);
if(isNaN(foo)){
  console.log("It is not a number");
}else{
  console.log('else:' + typeof foo)
}
【热门文章】
【热门文章】