2015-05-18 15:36
JavaScript中undefined、null、NaN的特点以及区别浅谈
javascript中有几种特殊的属性,本篇文章来通过简单的几组比较试验来看看undefined、null、NaN之间的特点以及undefined、null两者之间的区别。
<script type="text/javascript"> //实验一 var a1; var a2 = ""; var a3 = true; var a4 = 1; var a5 = "hello"; var a6 = new Object(); var a7 = undefined; var a8 = null; var a9 = NaN; alert(typeof a); //undefined alert(typeof a1); //undefined alert(typeof a2); //String alert(typeof a3); //boolean alert(typeof a4); //number alert(typeof a5); //String alert(typeof a6); //object alert(typeof a7); //undefined alert(typeof a8); //object alert(typeof a9); //number //实验二 var a1 = undefined; var a2 = null; var a3 = NaN; alert(a1 == a2); //显示"true" alert(a1 != a2); //显示"false" alert(a1 === a2); //显示"false" alert(a1 == a3); //显示"false" alert(a1 != a3); //显示"true" alert(a2 == a3); //显示"false" alert(a2 != a3); //显示"true" alert(a3 == a3); //显示"false" alert(a3 != a3); //显示"true" </script>
两组实验可以看出:
NaN是一种特殊的number,并且与任何值都不相等,包括自己,常用来检测是否是number。
undefined与null都有着代表“无”的特性。
其中未定义的值和定义未赋值的为undefined,null是一种特殊的object。
null是对象(空对象, 没有任何属性和方法),undefined是undefined类型的值。
undefined等值(==)于null,但不全等(===)于null。
到此,我们应该会有一点疑问,程序语言中有两个值表达着“无”的概念,那它们有什么用途区别吗?请过查找相关资料,得出以下结论:
null表示“没有对象”,表示该处不应该有值。例如作为函数的参数,表示该参数不是对象,则要使用null。
undefined表示“缺少值”,就是此处应该有一个值,但是没有定义。例如变量被声明却没有被赋值,该值就等于undefined。列如函数没有返回值时,默认返回undefined。
其实经过查找还得到一个与NaN相关的区别,那就是当undefined转化为数值时为NaN,null转化为数值则为0。
浅谈到此,虽然了解的不深,但是比较浅显和常用的特点与区别已经比较明显了,如果有码友发现文章有哪些不对的地方,或者有不同看法的话,愿能与我一起探讨,谢谢。
标签:javascript