前几篇已经了解了js中的数组、字符串和数字,js中还有一些比较特殊的值,比如Nan、null等,这些东西比较琐碎,但还是有必要了解一下下的啦。
一、null
有次提到过undefined和undeclared,前者表示已声明但未赋值,后者表示未声明,两者常用来表示空值。
null也表示空值,但它的意思是曾赋过值,但目前没有值。
二、NaN
NaN用英语来解释就是‘not a number’,可以将它理解为‘无效值’,但是你会发现有个有趣的点,用typeof看看它的数值类型,如下:
typeof NaN; // 结果为 "number"
可能你会说英文解释不是说‘not a number’么,其实这两者都没错,只是这个英文名字容易引起误解而已啦,知道NaN的类型还是‘number’就好。
NaN还有一个特殊点,它和自身不相等,是唯一一个非自反的值(什么叫自反,x === x不成立,什么叫非自反, x !== x 成立),那要如何判断它是否是NaN呢,如下:
NaN === NaN; // false
isNaN(NaN); // true
isNaN('string'); // true 这又是为什么呢,因为isNaN(),它参数为NaN,或不是数字,就会返回true
isNaN(''); // false 又一个有趣的结果,如果字符串为空,或数组为空,返回的却是false
let a = NaN;
a !== NaN; // 所以推荐这种方式来验证是否是NaN
typeof a === 'number' && isNaN(a); // 或是用这种方式进行验证
js中的零值有两个,一个是0(或是+0),另一个是-0,会有这种情况,是为了防止符号位丢失,具体的我也不太清楚,平时没怎么用到,就没怎么深究,待以后再细细考究。
此篇就此结束。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。