var name01 = null;返回布尔值为什么不是true?

var name01 = null;返回布尔值为什么不是true?

console.log(isNaN(name01));//isNaN()返回布尔值:true,false。
返回布尔值为什么不是true?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
Hbrsql 2017-03-20 11:30:19

isNaN(null)相当于isNaN(Number(null)),即isNaN(0),结果为false.

isNaN()的参数不是Number类型时, isNaN()会首先尝试将这个参数转换为数值,然后才会对转换后的结果是否是NaN进行判断。

因此,对于能被强制转换为有效的非NaN数值来说( 值得一提的是,空字符串和布尔值会被强制转换为数值0或1),返回false值也许会让人感觉莫名其妙。比如说,空字符串就明显”不是数值“(not a number)。

这种怪异行为起源于:“不是数值”(not a number)在基于IEEE-794数值的浮点计算体制中代表了一种特定的含义。isNaN函数其实等同于回答了这样一个问题:这个值被强制转换成数值时会不会返回IEEE-754中所谓的”不是数值“(not a number)。

详见:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/isNaN

提问者 web_東 2017-03-20 10:55:59

1:变量name01既不属于Number又不属于string,是属于object,空对象。

2:属于非数值类,那么应该返回值为true啊。

  • isNaN可以把以下转换为0再判断: "" " " null
    2017-11-13 16:13:23
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师