JavaScript - undefined與null的區分及最佳實踐
阿新 • • 發佈:2018-09-15
操作 boolean 強調 特殊屬性 fine 高級 不同 erro javascrip
主要參考
- 《JavaScript高級程序設計》
ECMAScript中的六種數據類型
ECMAScript中包含六種數據類型:
- Undefined
- Null
- Boolean
- Number
- String
- Object
其中,Undefined類型和Null類型是唯二的僅有一個值的數據類型
運算符typeof
通過
typeof
運算符可能返回如下六種可能的字符串:"undefined"
"boolean"
"string"
"number"
"object"
"function"
與ECMAScript中定義的六種數據類型比較,可發現如下差異點:
typeof null
並不會返回"null"
null
被認為是一個空的對象引用,因此會返回"object"
;返回值中出現了
"function"
,而函數並不是ECMAScript中定義的一種數據類型。實質上,在ECMAScript中函數也是對象,但函數確實有其特殊屬性,因此區分函數和其他對象是有必要的。
Undefined類型定義及其最佳實踐
Undefined類型中的唯一值
undefined
,表示未初始化的變量;註意:區分未初始化的變量與尚未定義的變量:
var message; // var age; alert(message); // "undefined" alert(age); // ReferenceError: age is not defined
但是,使用typeof操作符時,會有如下返回:
var message; // var age; alert(typeof message); // "undefined" alert(typeof age); // "undefined"
綜上,最佳實踐:
每次定義變量時都進行顯示初始化,那麽當
typeof
操作符返回"undefined"
時,只能說明該變量尚未被聲明。
Null類型定義及其最佳實踐
null
與undefined
的關系:alert(null == undefined); // true
因為,實際上
undefined
是派生自null
,但之所以區分是強調其各自的特殊指向。上面說過,
null
當一個意在保存對象的變量尚未實際真正保存對象時(剛聲明且暫未賦值),都應當明確地讓該變量保存
null
值:- 通過
null
與undefined
來區分暫未賦值而實際意義不同的對象; - 僅需通過檢查
null
便可判定相應變量是否已保存了一個對象的引用。
- 通過
JavaScript - undefined與null的區分及最佳實踐