undefined と null
JavaScriptでのデータの取扱いでよく混乱するのが、undefined と null です。
undefined
- 宣言のみが行われた変数または、まだ存在しないもの、あるいはもう存在しないもの。
- プリミティブデータ
null
- 値がない (あらゆるオブジェクト型はnull値から派生)
- Object の特殊なケース、構造化された型はすべてプロトタイプチェーンによって null から派生している。
undefined はプリミティブデータであり null はプリミティブデータではない。
両者を比較演算子で比べてみみると
var val1 ; var val2 = null ; console.log( (val1 == val2 ) ? 'TRUE' : 'FALSE' ) ; // TRUE console.log( (val1 === val2 ) ? 'TRUE' : 'FALSE' ) ; // FALSE
等価演算子 == では等しくなるが、厳密等価演算子 === では等しくなりません。
中身は「空」で等しいが型が違うということです。
ちなみに ” (空文字)は String型のプリミティブデータですので、null とも undefined とも別ものです。
null も undefined もそれぞれ null と undefined という値しか持ちません。
var val1 ; var val2 = null ; console.log( (val1 == '' ) ? 'TRUE' : 'FALSE' ) ; // FALSE console.log( (val2 == '' ) ? 'TRUE' : 'FALSE' ) ; // FALSE
参考リンク
MDN 用語集 > プリミティブ
MDN 用語集 > undefined
MDN 用語集 > null
MDN 開発者向けのウェブ技術 > JavaScript「再」入門