nullとundefined。コレの違いを聞くと必ず言われる「ggれks」。事で調べようジャマイカ。「何もない」という表現の由来nullとundefinedの意味としてよく表現される「何もない」。多くのプログラミング言語では、何もないことを1つの値で表現します。Javaなら「null」。Rubyならば「nil」など。逆にいえば、約束事を決めておいてでも、“何もない値"を使う必要があったわけです。「何もない」を表現する必要性とは?値を格納する箱に名前を付けるもの、あるいは値を束縛するために必要な物が変数。これこそが「null」が必要とされた理由です。システムエラー画面ではなく「何もなかった」を返すべき結果を示すためにnullを使う必要性があるんですね。多くの言語では、変数の初期値として利用する、関数の返り値に値がなかったことを表す、といった目的でnullが利用されているのです。yanyo;//変数yanyoを定義print(yanyo);//変数yanyoを出力この処理を実行するとundefinedが結果として返されます。JavaScriptでは、いきなりプロパティを利用できますが、初期値が入っていない場合はundefinedが使われるのです。上記のような処理で未定義を表すためにundefinedが使われていましたが、関数の返り値がundefined(未定義)では少し違和感があります。そのデータベースでは該当するキーワードが見つからなかっただけであって、決して「未定義」ではないはずです。このような場合は、nullの方がしっくりくると思います。3該当しない値を出力するJavaScriptの定番操作であるHTMLのノードを取得する関数を実行してみましょう。アナタの作ったページにid='yanyo'というHTML中にない(そんなIDは付けないハズ)yanyoノードを指定してみましょう。document.getElementByld('yanyo')実行すると、getElementByld関数は「undefined」ではなく「null」を返します。該当する値がないことを「null」で表現しているわけです。何も処理を記述していない関数の返り値は「undefined」となります。JavaScriptでは「何もない」が2種類ある?JavaScriptでは、関数を実行する際に必ず返り値を指定しなければなりません。この中身が空の関数は、undefinedを返すことになります。関数が返すものを定義していないので、undefinedが返るわけです。「何も返さない関数」であることを明示的に宣言したりする必要があります。Javaなどの言語では、voidで宣言する必要があります。区別しているので2つの値が存在するのです。「null」と「undefined」の用途がハッキリしない理由これだけ明確な区別をしておきながら、使う側がいまいち2つの用途を聞いたり調べるまでハッキリしない理由をまとめてみました。未定義と該当値が無いことを区別したい場合が少ないどっちかよくわかんなくてもエラーで停止しなければなんとなく良しとされる風潮。「!false」と「!null」は同じ「true」でしたが、等価演算子で比較すると「null」と「false」は違う「false」と判定されてしまいます。true一覧でわかるようにある操作では偽になるものが別の操作では偽(false)ではないのです。「undefined」と「null」。それぞれの概念はわかりましたが、いざ使いこなすとなるとまだまだ修行が必要な様です。