そのへんのちらしのうら

調べたこと、学んだこと、おもしろかったこと。

【メモ】JavaScriptにおけるnullとundefined

undefinedとは

  • undefinedはある変数の値が定義されていないことを表す値。(変数の型自体が定義されていない)
  • ある変数が宣言済みであるものの値を与えられていない。
  • 未定義のプロパティを参照しようとした。
  • 何もreturnしない関数の戻り値。
var x;
var obj = { a:12345 };
document.writeln(x);        // undefined
document.writeln(obj.b)     // undefined
  • undefinedはリテラルではなくGlobalオブジェクト(グローバル変数や関数を管理するためJavaScriptが自動的に生成する)のプロパティで定義されたプロパティにすぎない。
  • スクリプトから値を変更することもできるが、当然ながら影響範囲という点ですべきでない。

nullとは

  • nullはオブジェクトが存在しないことを意味する値。(定義はされているが、何も参照していない)
  • undefinedのようにプロパティではなく、リテラル。lもundefinedも基本形の特殊型に分類される。

比較のしかた

undefined == nullはtrueになる。

  • typeof a === "undefined"

    そこでよく使われているのがtypeofを使うやり方です。undefined値にtypeof演算子を作用させると必ず"undefined"という文字列が返るため、それと比較することで判定を行います。

  • ==nullで代用する

    [JavaScript] typeof arg == 'undefined' っていらないんじゃね? / LiosK-free Blogで紹介されていたやり方です。nullはundefinedと違って予約語です。どの文脈でも確実にnullが入っているので安心して使えます。 「===」を使わず「==」を使っているのがポイントですね。

参考

blog.tojiru.net liosk.blog103.fc2.com