JavaScript中null和undefined的比较和区别

来源:互联网 发布:中国宪法言论自由 知乎 编辑:程序博客网 时间:2024/06/16 16:31

在JavaScript中很经常就会出现nullundefined这几种结果,今天就详细的介绍一下null和undefined的定义和区别。

null根据其名字就可以大致看出来意思,就是为空。在js中如果变量这么定义的话var flag=null,这个时候flag就是个空值,将其打印出来也是null。

而undefined则表示未定义,例如:var flag;然后将flag打印出来,此时flag的结果就是undefined。

所以二者之间的区别就是一个是已经定义可是却是为空的,而另一种则是未定义是何种类似的。

下面看一下例子:

var flag1;var flag2=null;console.log("flag1:"+flag1);console.log("flag2:"+flag2);console.log("flag1==null?"+(flag1==null));console.log("flag1==undefined?"+(flag2==undefined));//”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等。console.log("flag1==flag2?"+(flag1==flag2));console.log("flag1===flag2?"+(flag1===flag2));console.log("flag1==flag2?"+(flag2=="null"));console.log("flag1==flag2?"+(flag1=="undefined"));

运行结果为:

flag1:undefinedflag2:nullflag1==null?trueflag1==undefined?trueflag1==flag2?trueflag1===flag2?falseflag1==flag2?falseflag1==flag2?false
这里需要解释一下的是==于===的区别:
1、对于string,number等基础类型,==和===是有区别的
1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等
2)同类型比较,直接进行“值”比较,两者结果一样
2、对于Array,Object等高级类型,==和===是没有区别的
进行“指针地址”比较
3、基础类型与高级类型,==和===是有区别的
1)对于==,将高级转化为基础类型,进行“值”比较
2)因为类型不同,===结果为false
总结起来就是:”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等。

这里需要注意的是:null==undefined结果是true的,null===undefined结果是false的。


1 0
原创粉丝点击