JavaScript 再入門(その3) 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「再」入門