javascript
var foo = "55"; var myNumber = Number(foo); if(isNaN(foo)){ console.log("It is not a number"); }
我原本以为输出是It is not a number,但是输出是undefined,编程新手求大神解答。
javascript
var foo = "55"; var myNumber = Number(foo); if(isNaN(foo)){ console.log("It is not a number"); }
我原本以为输出是It is not a number,但是输出是undefined,编程新手求大神解答。
看这里: isNaN()
参数foo
虽然是字符串, 但是在函数中会强制转成Number
, 转换后就是数字55
, 这个不是NaN
, 所以没有打印It is not a number
.
输出 "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 >
把它写全了再执行就明白了
var foo = "55";
var myNumber = Number(foo);
if(isNaN(foo)){
console.log("It is not a number");
}else{
console.log('else:' + typeof foo)
}
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
一楼已经说了,补充下,你看到那个undefined是整个表达式最后的值,并不是console.log打印出来的。例如你在控制台输入
foo
会显示"55"
,你输入var a = 1
会显示undefined
,输入a = 2
会显示2
,输出的都是表达式本身的返回值