JS中undefined、null以及NaN之间的区别,以及对象属性赋值的面试题

(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>

(4)一个关于JS中对象的面试题目(核心是注意对象的属性名,用JS标识符(a和b)做属性名的直接被转换成["object Object"],所以都是一样的):

详细分析见: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, 的区别详细解析

js中undefined,null,NaN的区别

JavaScript Undefined,Null类型和NaN值区别


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。