JavaScript——undefined与null的区别

undefined类型的值仅有一个,即undefined,该值用于表示某个变量不存在或者没有为其分配值,此外,它还表示对象的属性不存在,该值不属于JavaScript保留字。

注:如果定义了一个变量却没有为其赋值,则该变量的值默认为undefined,这个值是系统默认分配的。此外,访问对象并不存在的属性时,该属性也返回undefined。

null则用于表示变量的值为空,是JavaScript的保留字。

从二者的定义来看,它们的区别不是很明显。

总的来说,undefined表示没有为变量设置值或者属性不存在,而null则表示变量有值,只不过其值为null。说白了,二者的区别就是有没有值,存不存在。

下面来看一段代码:

<script type="text/javascript">
    var x,y=null;
//判断x y的值是否为空
    if(x===undefined)
    {
        alert('声明变量后没有赋初值,默认其值为undefined。');
    }
    if(x===null)
    {
        alert('声明变量后默认值为null');
    }
    //判断x(其值为undefined)与y(其值为null)是否相等
    if(x==y)
    {
        alert('x等于(==)y');
    }
    //判断x与y是否严格相等
    if(x===y)
    {
        alert('x严格等于(===)y');
    }
    else{
        alert('x不严格等于(!==)y');
    }
    //测试一个并不存在的数。
    if(String.xyz===undefined)
    {
        alert('不存在的属性值默认为undefined');
    }

</script>

上面代码的执行结果是,x为undefined,x==y返回真,弹出“x等于(==)y”,而x===y为假,弹出“x不严格等于(!==)y”,最后弹出“不存在的属性值默认为undefined”。

看了上面的代码以及运行结果之后,我想大家应该也就理解了这两者的区别。

总的来说,如果不进行精确比较的话,很多时候undefined和null本身就相等,但是若是精确区分的话,这两个值就不相等了。这个从上文中x==y 和x===y的判断就可以知道。

还是文章开头的那句话,这两个的区别就在于:存不存在,有没有值。存在没值或不存在的是undefined,存在有值的是null。

猜你喜欢

转载自blog.csdn.net/Searchin_R/article/details/82951674