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,可是,
console.log( 10 / NaN ); //NaN
console.log( 10 & NaN ); //0
为啥是0而不是NaN?
说是有个函数,isNaN(),专门判断参数是否“不是数值”。
有点绕,我理解了一下,这个函数会把接收到的参数转换为数值。能转的就返回false,不能转的就是返回true。就这样:
console.log( isNaN(NaN) );//true
NaN,它不是数值;
console.log( isNaN(false) );//false
false,它可以被转成0,所以它是数值。
而且这货还能搞对象,搞对象,搞对象,就这样:
function aaa(){
return "aaa"
}
console.log( isNaN(aaa) );//true
具体的原因说是在3.5节,跟操作符有关,到时再看。
哎呀,真是烦啊,null,undefined,NaN这三者的区别,在面试中好多次遇到。。。