JavaScript基础篇--Undefined与Null

来源:互联网 发布:微信html5制作软件 编辑:程序博客网 时间:2024/05/19 02:24

undefinednullJs中的五种类型中的两种数据


 

 

先说下我们如何检查他们的不同。使用的是typeof操作符,用户检查变量的数据类型,对于值或变量使用typefo操作符会有如下结果

 

字符串          描述

Undefined      未定义

Object          对象或null

 

相同点:


javascript中,将一个变量赋值为undefinednull。几乎是没有区别的

 

Var a=undefined;Var a=null;
 

上面代码中,a变量分别被赋值为undefined和null,这两种写法几乎等价。

 

我们通过if的隐士转换看看他们的结果是否相同,测试结果

 

if (!undefined)    alert('undefined is false');// undefined is false if (!null)    alert('null is false');Undefined==null//True var box=null var car;if(car==box){alert('我们值相等');        }


以上代码说明两者行为是相等的

 

 

不同点:

 

undefined类型


只有一个值,undefined,是声明变量,但没有对其初始化,这个变量的默认是就是undefined

 

测试:

 

Var box;Alert(box);

因为没有赋值的变量会隐式转为undefined,它的目的主要是为了用于比较。

未初始化的变量与根本不存在的变量也是不一样的

 

Var box;Alert(age);  //age is not defined Alert(typeofage)//undefinedAlert(typeofbox) //undefined

我们测试他们的typeof结果都返回undefined,但是逻辑上他们的值一个是undefined,一个是报错(notdefined)。所以我们在定义变量时候,不要只声明,不赋值。

 

 

Null类型



它表示一个空对象引用,typeof操作检测null会返回object


测试

 

var box=null;Alert(typeof box);//page isobject//box是null类型,值是null,类型返回的字符是object

我们再用隐士的转换测试


Var box=null;If(box!=null){Alert("box对象已经存在");}

结果是box对象已经存在,为何呢.了解到if的表达式boolean类型的,所以这里存在着数据类型的转换。

Box转为对象类型,对象类型与null值是不相等的

 

小结

 

 虽然undefnull两个值比较是相等的,所以初始化的变量和赋值为null变量会相等。但是使用的场合是不同的。而且严格的说恒等(===)两者就不在相等了。

 

 



3 0
原创粉丝点击