Undefined型別與Null型別
阿新 • • 發佈:2019-02-03
一、Undefined型別
Undefined 型別只有一個值,即特殊的undefined。在使用var 宣告變數,但沒有對其初始化時,這個變數的值就是undefined。
var box;PS:我們沒有必要顯式的給一個變數賦值為undefined,因為沒有賦值的變數會隱式的(自動的)賦值為undefined;而undefined 主要的目的是為了用於比較,ECMAScript 第3 版之前並沒有引入這個值,引入之後為了正式區分空物件與未經初始化的變數。未初始化的變數與根本不存在的變數(未宣告的變數)也是不一樣的。
alert(box);
var box;PS:如果typeof box,typeof age 都返回的undefined。從邏輯上思考,他們的值,一個是undefined,一個報錯;他們的型別,卻都是undefined。所以,我們在定義變數的時候,儘可能的不要只宣告,不賦值。
alert(age); //age is not defined
二、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)