前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >javascript 红皮高程(7)

javascript 红皮高程(7)

作者头像
web前端教室
发布2018-02-06 13:42:42
5110
发布2018-02-06 13:42:42
举报
文章被收录于专栏:web前端教室web前端教室

javascript的数值表示,真是。。

这还有个NaN,非数值(Not a Number),就是不是数字。然后已是书里写着,是一个特殊的数值。

这让小学文化的我,怎么理解?一个不是数字的东西,然后它又是一个特殊的数值。

NaN,它用来表示一个本来要返回数值的操作数,但没有返回数值的时候,就返回NaN了。

书上第29页。说是这样就不用报错了。意思就是,如果不返回NaN,你让我返回什么呢,,,

ECMAScript里,任何数值除以非数值,都返回NaN。

书上也提示了,实际上0除0,返回NaN。正数除以0返回Infinity;负数除以0,返回-Infinity。我感觉这些东西,最好就是死记硬背下来。

重点哈,NaN有二个特别:

1,它和谁都不相等,包括它自己;

2,谁和它有任何操作,都返回NaN;

这有啥用?不知道啊,反正死记吧,也许哪个库或框架里会用。

第2条里说谁跟NaN搞,都会返回NaN,可是,

代码语言:js
复制
console.log( 10 / NaN ); //NaN
console.log( 10 & NaN ); //0

为啥是0而不是NaN?

说是有个函数,isNaN(),专门判断参数是否“不是数值”。

有点绕,我理解了一下,这个函数会把接收到的参数转换为数值。能转的就返回false,不能转的就是返回true。就这样:

代码语言:js
复制
console.log( isNaN(NaN) );//true

NaN,它不是数值;

代码语言:js
复制
console.log( isNaN(false) );//false

false,它可以被转成0,所以它是数值。

而且这货还能搞对象,搞对象,搞对象,就这样:

代码语言:js
复制
function aaa(){
  return "aaa"
}
console.log( isNaN(aaa) );//true

具体的原因说是在3.5节,跟操作符有关,到时再看。

哎呀,真是烦啊,null,undefined,NaN这三者的区别,在面试中好多次遇到。。。

重学javascript 红皮高程(5)

重学javascript 红皮高程(4)

重学javascript 红皮高程(3)

重学javascript 红皮高程(2)

重学javascript 红皮高程(1)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 web前端教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档