JavaScript豆知識4_undefinedとnullの違いを感覚的に表現してみた
これが好きなプログラマーは少ないであろう、「無」を表現するオブジェクトのお話です。言語によって違っている上にだいたいややこしい挙動をする困りものですね。今回はjavascriptでのNULL値、その中でも慣れるまでどっちが出てくるのかよくわからないundefinedとnullについて、人間の会話だったら…というイメージも添えて解説してみます。
undefined
「未定義」を表します。プログラミングでは(暗黙的にでも)宣言をしなければオブジェクトとして認識されないのでこういう表現になります。人間の会話で例えるとこんな感じでしょうか。
パターン1(未定義のオブジェクトを参照)
A「なあお前、 あkjrてゃhらgrw のことどう思う?」
B「は?なんて??」
A「あkjrてゃhらgrw」
B「日本語でおk」
パターン2(未定義のプロパティを参照)
A「なあ、空の年齢の味ってどんなだろうな?」
B「お前は何を言っているんだ。」
null
「無」を意味します。色々な言語で出てきますね。javascriptでは、「そこにnullがある」ということを表します。プログラミング的に言うと「空のコンテナがある」という感じです。会話で例えるとこんな感じかと思います。
パターン1(空のコンテナを参照)
A「こいつを見てくれ!すげーのを捕まえたぜ!(空の虫かごを見せる)」
B「すげー!!「無」を捕まえたんだな!!!」
パターン2(値が無のプロパティを参照)
A「夏になったら俺の別荘に泊まりに行こうぜ!」
B「お前は別荘なんて持ってないだろ、目を覚ませ。」
他にも''とか[]とか{}とかもあるのですが、それらはまた機会があれば。それにしても、「なにもないんじゃない、「無」があるんだ。」、なんて言葉を大真面目に使う日が来るとは思ってもみなかったですね。