为了账号安全,请及时绑定邮箱和手机立即绑定

关于循环语句中的NaN=="number"的疑问?

关于循环语句中的NaN=="number"的疑问?

丛从绿草 2018-03-30 16:07:49
var str="IMOOC521"; var num=parseInt(str); if (num==NaN){//NaN与任何值都不相等,包括NaN本身 alert(NaN); }else if(num==521){ alert(521); }else if(typeof num=="number"){ alert("number"); }else{ alert("str"); }我就是问下 Javascript流程控制语句中的1.5节if语句的嵌套, 这里的typeof num=="number",其实就是NaN==NaN吗?可是这里说NaN和任何值不相等啊, 如果说,typeof检测数据类型,那num的数据类型是"特殊数值", 那"number" 这是字符串啊, 这个值怎么相等呢?  ”==“我看了笔记, 只是说比较值是否相等。
查看完整描述

2 回答

?
什么鬼_呀你

TA贡献46条经验 获得超35个赞

num的值是NaN,但是类型是number.

查看完整回答
反对 回复 2018-03-30
  • 什么鬼_呀你
    什么鬼_呀你
    补充一句,正如定义所说的,NaN不等于任何值,包括自身,所以第一个循环就false掉
?
CodeManDSH

TA贡献58条经验 获得超18个赞

1、parseInt() 返回的是整数

2、typeof 整数   的话返回“number”

查看完整回答
反对 回复 2018-03-30
  • 丛从绿草
    丛从绿草
    还是不解, 这里代码中, typeof(NaN)返回值的是number==“number”,是这样理解嘛?
  • CodeManDSH
    CodeManDSH
    parseInt(str) 跟NaN没有关系你懂吗,if(typeof num=="number"){}能执行出来,就是因为typeof parseInt(str) 返回"number", 到这里已经跟上面的NaN没关系了呀,上面的if (num==NaN){}就是判断为false,所以不执行了,那是判断不是赋值呀,num 还是这个: parseInt(str)
  • 丛从绿草
    丛从绿草
    哦。知道了。
  • 2 回答
  • 0 关注
  • 1792 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信