JS中的Null和Undefined

Undefined和Null作为JS中唯二的两种只有一个值的类型,在js的许多转换机制及逻辑判断上有异于其他类型之处

一.Undefined类型
    对于一个定义了,但未赋值的变量,系统默认其为Undefined类型,且值为undefined
但若一个变量连定义都没有,会出现很神奇的一幕,即使用typeof操作符可检测出其类型为undefined,但输出该变量值时会报错,例如:

1 var x;
2 console.log(x);

 结果为:

 

1 console.log(y);

结果为:

 

 

var x;
2 console.log(typeof(x));
3 console.log(typeof(y));

结果为:

 

 

二.Null类型
    一般未指定指向对象的指针会被默认为Null类型,因为一个值为Null的变量其实际类型为object,因为系统会将其视为一个保存对象的变量,只不过还未初始化。
例如:

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.null==undefined --> true
    由于js认为undefined派生于null,所以执行==操作符时结果为true
    但若执行===,则二者不等
    分别对二者使用typeof,其结果也不等(这是显然的,前面已提到undefined类型为Undefined,但null会被视为object)
    
    2.在==中,null和undefined不转化为任何数值,所以虽然null转化为数值时为0,但是null==0结果为false
例如:

 

1 console.log(null==undefined);
2 console.log(null===undefined);
3 console.log(typeof null==typeof undefined);

结果为:

 

posted @ 2020-05-25 22:21  hygperses  阅读(812)  评论(0)    收藏  举报