标签:
(1)以下三种情况typeof 返回类型为undefined
——当变量未初始化时
——变量未定义时 
——函数无明确返回值时(函数没有返回值时返回的都是undefined)
(2)Null 类型 
undefined 是由null派生处理的,因此undefined == null 
undefined 是声明了但是没有初始化的该变量, 
null表示尚未存在的对象 。
(3)NaN 值 
是一个特殊值,表示非数(Not a Number),类型转换失败就会返回NaN 
——NaN 不等于自己,即 NaN == NaN 是 false 
——判断NaN 使用 isNaN();
(3)其实Null、NaN和undefined都是变量的默认初始值。变量类型不同,系统给与的初始值就不同:
——int,uint - 0
——Boolean - false
——Number - NaN
——String,Array,Object - null
——未指定变量类型 - undefined
	<script>
		document.write(typeof(a1));//undefined
		var a2;
		document.write(typeof(a2));//undefined
		var a3=[];
		document.write(typeof(a3));//object
		var a4={};
		document.write(typeof(a4));//object
		var a5=null;
		document.write(typeof(a5));//object
		var a6=document.getElementById("没有这个id");
		document.write(typeof(a6));//object
		var a7=new Object;
		document.write(typeof(a7));//object
	</script>详细分析见:JS中的对象创建、属性访问
<script> var a=new Object; var b=new Object; var c=new Object; c[a]=a; c[b]=b; alert(c[a]==a);//false alert(c[a]===a);//false alert(c[a]===b);//true alert(c[b]===b);//true </script>
<script> var a=new Object; var b=new Object; var c=new Object; c["a"]=a; c["b"]=b; alert(c["a"]==a);//true alert(c["a"]===a);//true alert(c["a"]===b);//false alert(c["b"]===b);//true </script>
参考资料:
js判断undefined类型,undefined,null, 的区别详细解析
JavaScript Undefined,Null类型和NaN值区别
JS中undefined、null以及NaN之间的区别,以及对象属性赋值的面试题
标签:
原文地址:http://blog.csdn.net/weisubao/article/details/43481549