JavaScript基础篇--Undefined与Null
undefined与null是Js中的五种类型中的两种数据
先说下我们如何检查他们的不同。使用的是typeof操作符,用户检查变量的数据类型,对于值或变量使用typefo操作符会有如下结果
字符串 描述
Undefined 未定义
Object 对象或null
相同点:
在javascript中,将一个变量赋值为undefined或null。几乎是没有区别的
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)//undefined Alert(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值是不相等的
小结
虽然undef与null两个值比较是相等的,所以初始化的变量和赋值为null变量会相等。但是使用的场合是不同的。而且严格的说恒等(===)两者就不在相等了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。