阿萌的程序小屋

萌物控重度患者与您一起畅游技术与梦想的世界

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。

浅谈到此,虽然了解的不深,但是比较浅显和常用的特点与区别已经比较明显了,如果有码友发现文章有哪些不对的地方,或者有不同看法的话,愿能与我一起探讨,谢谢。

如有朋友感觉我的博文或代码有问题,愿能给予我宝贵的意见!Thanks

另注:转载请随意,但请带上本文地址,万分感谢。

http://www.wangmengyu.cn/?p=399

这就是真的真的是传说中的公告牌的说~~
暂且努力发展中~~

性别:男  年龄:20岁
现居:江苏  南京  浦口区
标语:萌即是一切