NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。NaN和谁都不相等,包括自己。
你的i==NaN也就是NaN==NaN,因为NaN不等于任何值,所以i==NaN为false,则执行第二句。
undefined 是未定义的值和定义未赋值,一般出现在对象属性不存在或声明了变量但从未赋值时;
null 是一种特殊的 object,包含“无值”或“无对象”。换句话说,该变量没有保存有效的数、字符串、boolean、数组或对象;
NaN 是一种特殊的 number,表示“非数字”(非数字的含义不仅仅是不是数字,也包括无理数和溢出数值)。
undefined 与 null 是值相等,但实际并不等(== 和 === 的区别);NaN 与任何值都不等,与自己也不想等。
NaN是一个值类型,同是也是一个数值.意思是Not A Number,这个都知道是什么意思.值比较特殊,特殊在于NaN是一个数字,是一个与任何数值都不相等的数字.。
javascript:alert(typeof(NaN));可以完全证实,这是一个数字类型的值.也就是说NaN是当时转换时一种出错的策略,转成一个谁也不认识的数字而已.从这个角度上理解它是一个数字,可以理解成数学中的无穷大或是无穷小.但与数学中一个理论是相悖的,我们常说,无穷大加1等于无穷大是错误的.正是无空大加1不等于无穷大,所以无穷大也不等于它自己本身.所以数值NaN连自身都不会相等的.。
而在javascript中NaN既然作为一个无穷大,那么它表示的就不再是一个值,而是一类值,所以有时可视NaN是一个类型.。
正是这样的边缘问题,可以导致作如下测试是正确的:。
javascript:alert(NaN+1);结果是无穷大.。
但唯一的是NaN是一个不确定数,所以NaN不能等于NaN.。
这好比是randomise中的random,random +1 还是一个不确定的数值,但random不会等于random一样.两者的区别在于random能生成一个确定数,但本身不确定.而NaN生成的就是一个不确定数.。
null 是指一个空白对象,即什么都没有、什么都不存在。
NaN是Not a Number(不是一个数字)的简称,即变量或表达式的值不是数字或可转化为数字的其他值。
undefined的意思就是未定义、未声明,任何未经声明的对象(如变量、函数等)都是undefined。
null含义为空
NaN含义是非数字
undefined含义是没有定义或未赋值状态。