nullとundefined

javascript

nullとundefinedについて

javascriptの予約語である

null

は値が存在しないことを表す値です。

nullの実行について

次のようなコードを書いて実行してみた結果、
コンソールに出力しても当然、nullが返ります。

var test = null;
console.log(test);

これをtypeof演算子を通して出力してみます。

console.log(typeof(test));

するとobjectという出力結果になります。

undefinedの実行について

このnullとは対照的にundefinedという予約語もあります。

意味としては「値が存在しない」というnullと同じですが、初期化されていない変数の値、オブジェクトのプロパティが存在しない、配列の要素が存在しない場合の、未定義の値を指すときを表します。

nullは予約語ですが、undefinedは予約語ではないです。

undefinedに対してtypeof演算子を使ってみます。

console.log(typeof(undefined));

実行するとそのままundefinedが出力されます。

また、一度変数に入れて実行すると、下記の例では同様にundefinedが出力されます。

var test2 = undefined;
console.log(test2);
console.log(typeof(test2));

nullとundefinedの比較

nullとundefinedを比較してみます。

以下のコードを書いて実行結果をみてみます。

var test_null = null;
var test_undefined = undefined;

if (test_null == test_undefined) {
	console.log("一致する");
} else {
	console.log("一致しない");
}

if (test_null === test_undefined) {
	console.log("一致する");
} else {
	console.log("一致しない");
}

上記の実行結果はともに「一致する」という出力結果になります。
一度変数に入れた両者の値として解釈されるので、等値(==)と同値(===)の判定条件でも同じになりました。
この記事を書いている段階では、変数に代入した後にどう解釈されているのか、もう少し深く理解する必要があります。

では、次のような直接的に書いて両者を比較する場合はどうなるか、試してみます。

if (null == undefined) {
	console.log("一致する");
} else {
	console.log("一致しない");
}

if (null === undefined) {
	console.log("一致する");
} else {
	console.log("一致しない");
}

この場合は、等値(==)の場合は「一致する」として、同値(===)の場合は「一致しない」という結果になりました。

nullとundefinedのオブジェクトについて

nullをtypeof演算子でみるとobjectという出力結果になります。
objectという結果になりますが、nullにはプロパティやメソッドもありません。

次のようなコードを書いて実行してみました。

//何も表示されない
null

//存在しないメソッドを呼ぶ
null.test();

結果、nullに対して存在しないメソッドを呼んでも

TypeError: null has no properties

という出力結果になります。

ここでは存在しないメソッドを呼びましたが、そもそもnullに対してはメソッドを追加することができない為、どのような場合でもTypeErrorになります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です