JavaScript——undefined與null的區別
阿新 • • 發佈:2018-12-13
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。