扫码关注官方订阅号
javascriptvar foo = "55"; var myNumber = Number(foo); if(isNaN(foo)){ console.log("It is not a number"); }
javascript
var foo = "55"; var myNumber = Number(foo); if(isNaN(foo)){ console.log("It is not a number"); }
我原本以为输出是It is not a number,但是输出是undefined,编程新手求大神解答。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
一楼已经说了,补充下,你看到那个undefined是整个表达式最后的值,并不是console.log打印出来的。例如你在控制台输入foo会显示"55",你输入var a = 1会显示undefined,输入a = 2会显示2,输出的都是表达式本身的返回值
foo
"55"
var a = 1
undefined
a = 2
2
看这里: isNaN()
参数foo虽然是字符串, 但是在函数中会强制转成Number, 转换后就是数字55, 这个不是NaN, 所以没有打印It is not a number.
Number
55
NaN
It is not a number
输出 "undefined" 是因为你这段代码最后执行的一句没有返回值。
"undefined"
foo 的值是 "55",在需要它作为数字参与计算的时候,它会自动转换成数字 55,肯定不是 NaN,所以 if 中的语句未执行。
if
大家講的都是原理, 我給你寫一個例子. 看你的表達意思是, 檢查這個variable是不是Number. 直接 a === +a, 這裡的 +a 是吧a 轉換為Number, 然後和原來的a比較.
a === +a
+a
a
例子
node> a = 10 10 > a == +a true > a = '10' '10' > a == +a true > a === +a false >
node
> a = 10 10 > a == +a true > a = '10' '10' > a == +a true > a === +a false >
console.log("55"==55) //true console.log("55"===55) //false
由于NaN根本就不成立,if语句没有执行,所以控制台并没有打印!
把它写全了再执行就明白了
var foo = "55"; var myNumber = Number(foo); if(isNaN(foo)){ console.log("It is not a number"); }else{ console.log('else:' + typeof foo) }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
一楼已经说了,补充下,你看到那个undefined是整个表达式最后的值,并不是console.log打印出来的。例如你在控制台输入
foo会显示"55",你输入var a = 1会显示undefined,输入a = 2会显示2,输出的都是表达式本身的返回值看这里: isNaN()
参数
foo虽然是字符串, 但是在函数中会强制转成Number, 转换后就是数字55, 这个不是NaN, 所以没有打印It is not a number.输出
"undefined"是因为你这段代码最后执行的一句没有返回值。foo的值是"55",在需要它作为数字参与计算的时候,它会自动转换成数字55,肯定不是NaN,所以if中的语句未执行。大家講的都是原理, 我給你寫一個例子.
看你的表達意思是, 檢查這個variable是不是Number.
直接
a === +a, 這裡的+a是吧a 轉換為Number, 然後和原來的a比較.例子
console.log("55"==55) //true
console.log("55"===55) //false
由于NaN根本就不成立,if语句没有执行,所以控制台并没有打印!
把它写全了再执行就明白了