Undefined和Null作为JS中唯二的两种只有一个值的类型,在js的许多转换机制及逻辑判断上有异于其他类型之处
一.Undefined类型
对于一个定义了,但未赋值的变量,系统默认其为Undefined类型,且值为undefined
但若一个变量连定义都没有,会出现很神奇的一幕,即使用typeof操作符可检测出其类型为undefined,但输出该变量值时会报错,例如:
1 var x;
2 console.log(x);
结果为:
1 console.log(y);
结果为:
1 var x;
2 console.log(typeof(x));
3 console.log(typeof(y));
结果为:
二.Null类型
一般未指定指向对象的指针会被默认为Null类型,因为一个值为Null的变量其实际类型为object,因为系统会将其视为一个保存对象的变量,只不过还未初始化。
例如:
1 var x=null;
2 console.log(x);
3 console.log(typeof x);
结果为:
三.Undefined和Null在类型转换中的特殊之处
1数值转换
Number 函数
Undefined–>NaN
Null–>0
parseInt函数
Undefined–>NaN
Null–>NaN
2字符串转换
二者都不含toString方法,需使用String函数,且转换后的值为
Undefined–>“undefined”
Null–>“null”
3Boolean函数
将二者全部视为false
四.操作符
1.nullundefined --> true
由于js认为undefined派生于null,所以执行操作符时结果为true
但若执行=,则二者不等
分别对二者使用typeof,其结果也不等(这是显然的,前面已提到undefined类型为Undefined,但null会被视为object)
2.在==中,null和undefined不转化为任何数值,所以虽然null转化为数值时为0,但是null==0结果为false
例如:
1 console.log(nullundefined);
2 console.log(null=undefined);
3 console.log(typeof null==typeof undefined);
结果为: