在JavaScript中很经常就会出现null和undefined这几种结果,今天就详细的介绍一下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:undefined
flag2:null
flag1==null?true
flag1==undefined?true
flag1==flag2?true
flag1===flag2?false
flag1==flag2?false
flag1==flag2?false
这里需要解释一下的是==于===的区别:1、对于string,number等基础类型,==和===是有区别的
1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等
2)同类型比较,直接进行“值”比较,两者结果一样
2、对于Array,Object等高级类型,==和===是没有区别的
进行“指针地址”比较
3、基础类型与高级类型,==和===是有区别的
1)对于==,将高级转化为基础类型,进行“值”比较
2)因为类型不同,===结果为false
总结起来就是:”==”与”===”是不同的,一个是判断值是否相等,一个是判断值及类型是否完全相等。
这里需要注意的是:null==undefined结果是true的,null===undefined结果是false的。