undefined 是未定义的值和定义未赋值,一般出现在对象属性不存在或声明了变量但从未赋值时;
超过十余年行业经验,技术领先,服务至上的经营模式,全靠网络和口碑获得客户,为自己降低成本,也就是为客户降低成本。到目前业务范围包括了:做网站、成都网站设计,成都网站推广,成都网站优化,整体网络托管,小程序制作,微信开发,APP应用开发,同时也可以让客户的网站和网络营销和我们一样获得订单和生意!
null 是一种特殊的 object,包含“无值”或“无对象”。换句话说,该变量没有保存有效的数、字符串、boolean、数组或对象;
NaN 是一种特殊的 number,表示“非数字”(非数字的含义不仅仅是不是数字,也包括无理数和溢出数值)。
undefined 与 null 是值相等,但实际并不等(== 和 === 的区别);NaN 与任何值都不等,与自己也不想等。
按照这样子的一个思路来理解:
-Infinity 加 Infinity 无解,无法判断谁更大一些
-Infinity 加 -Infinity 更趋向于负无穷
Infinity 加 Infinity 更趋向于正无穷
Infinity 加 -Infinity 无解
var y=-3.1415926666E3088;
y=y-1e292;
alert(y); // -Infinity
var y=-3.1415926666E3088;
y=y-1e292;
alert(3E30000); // Infinity
alert(y-3E30000); // -Infinity 减 Infinity 为 -Infinity
var y=-3.1415926666E3088;
y=y-1e292;
alert(y+3E30000); // -Infinity 加 Infinity 为 NaN
null 是指一个空白对象,即什么都没有、什么都不存在
NaN是Not a Number(不是一个数字)的简称,即变量或表达式的值不是数字或可转化为数字的其他值
undefined的意思就是未定义、未声明,任何未经声明的对象(如变量、函数等)都是undefined
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生成的就是一个不确定数.
NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。NaN和谁都不相等,包括自己。
你的i==NaN也就是NaN==NaN,因为NaN不等于任何值,所以i==NaN为false,则执行第二句。