前几篇已经了解了js中的数组、字符串和数字,js中还有一些比较特殊的值,好比Nan、null等,这些东西比较琐碎,但仍是有必要了解一下下的啦。数组
1、null
有次提到过undefined和undeclared,前者表示已声明但未赋值,后者表示未声明,二者经常使用来表示空值。
null也表示空值,但它的意思是曾赋过值,但目前没有值。code
2、NaN
NaN用英语来解释就是‘not a number’,能够将它理解为‘无效值’,可是你会发现有个有趣的点,用typeof看看它的数值类型,以下:字符串
typeof NaN; // 结果为 "number"
可能你会说英文解释不是说‘not a number’么,其实这二者都没错,只是这个英文名字容易引发误解而已啦,知道NaN的类型仍是‘number’就好。
NaN还有一个特殊点,它和自身不相等,是惟一一个非自反的值(什么叫自反,x === x不成立,什么叫非自反, x !== x 成立),那要如何判断它是不是NaN呢,以下:string
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,会有这种状况,是为了防止符号位丢失,具体的我也不太清楚,平时没怎么用到,就没怎么深究,待之后再细细考究。
此篇就此结束。英文