1. 程式人生 > >JavaScript——undefined與null的區別

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。