1. 程式人生 > >Undefined型別與Null型別

Undefined型別與Null型別

一、Undefined型別

Undefined 型別只有一個值,即特殊的undefined。在使用var 宣告變數,但沒有對其初始化時,這個變數的值就是undefined。

var box;
alert(box);
PS:我們沒有必要顯式的給一個變數賦值為undefined,因為沒有賦值的變數會隱式的(自動的)賦值為undefined;而undefined 主要的目的是為了用於比較,ECMAScript 第3 版之前並沒有引入這個值,引入之後為了正式區分空物件與未經初始化的變數。未初始化的變數與根本不存在的變數(未宣告的變數)也是不一樣的。
var box;
alert(age); //age is not defined
PS:如果typeof box,typeof age 都返回的undefined。從邏輯上思考,他們的值,一個是undefined,一個報錯;他們的型別,卻都是undefined。所以,我們在定義變數的時候,儘可能的不要只宣告,不賦值。

二、Null型別

Null 型別是一個只有一個值的資料型別,即特殊的值null。它表示一個空物件引用(指標),而typeof 操作符檢測null 會返回object。

var box = null;

alert(typeof box);

如果定義的變數準備在將來用於儲存物件,那麼最好將該變數初始化為null。這樣,當檢查null 值就知道是否已經變數是否已經分配了物件引用了。

var box = null;

if (box != null) {

alert('box 物件已存在!');

}

有個要說明的是:undefined 是派生自null 的,因此ECMA-262 規定對它們的相等性測試返回true。

alert(undefined == null);

由於undefined 和null 兩個值的比較是相等的,所以,未初始化的變數和賦值為null 的變數會相等。這時,可以採用typeof 變數的型別進行比較。但,建議還是養成編碼的規範,不要忘記初始化變數。

var box;

var car = null;

alert(typeof box == typeof car)