javascriptvar foo = "55"; var myNumber = Number(foo); if(isNaN(foo)){ console.log("It is not a number"); }
我原本以为输出是It is not a number,但是输出是undefined,编程新手求大神解答。
javascriptvar 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)
}
1 回答862 阅读✓ 已解决
1 回答1.1k 阅读
2 回答781 阅读
2 回答627 阅读
2 回答607 阅读
1 回答687 阅读
2 回答528 阅读
一楼已经说了,补充下,你看到那个undefined是整个表达式最后的值,并不是console.log打印出来的。例如你在控制台输入
foo会显示"55",你输入var a = 1会显示undefined,输入a = 2会显示2,输出的都是表达式本身的返回值