変数の値が未定義値(undefined)か判定する

JavaScript では変数を宣言したあとで値を一度も格納していない場合は未定義値 undefined が格納されています。ここでは変数がまだ未定義で undefined が格納されているかどうかを判定する方法について解説します。

(Last modified: )

宣言した変数に格納されている値

変数を利用する場合は変数を宣言してから値を代入します。変数を宣言だけして値を一度も代入していない場合、変数には未定義値( undefined )という特殊な値が格納されています。

実際に変数を宣言し、値を格納する前にコンソールに変数の値を出力すると undefined が出力されます。

let num;
console.log(num);
>> undefined

この undefined というのは文字列ではありません。そのため、変数に格納されている値が undefined かどうかを判定するために次のように行うことはできません。

let num;
if (num === 'undefined'){
  console.log('undefined');
}else{
  console.log('not undefined');
}

>> not undefined

それでは変数に格納されている値が未定義値かどうかを判定する方法について 2 つご紹介します。

グローバル変数undefinedと比較する

JavaScript では undefined という名前のグローバル変数が定義されています。そして undefined には初期値としてプリミティブ値である undefined が格納されています。(名前が同じなので紛らわしいですが)。

console.log(undefined);
>> undefined

グローバル変数 undefined に新しい値を格納することができないので、常に undefined が格納されています。

undefined = 'Yes';
console.log(undefined);
>> undefined

変数に格納されている値が未定義値かどうかを判定するには、グローバル変数 undefined と比較することで判定することができます。

let num;
if (num === undefined){
  console.log('undefined');
}else{
  console.log('not undefined');
}

>> undefined

typeof演算子を使用する

typeof 演算子は引数を 1 つ取る演算子で引数のデータ型を表す文字列を返します。

console.log(typeof 100);
>> number

console.log(typeof 'abc');
>> string

未定義値が格納されている変数を typeof 演算子の引数として指定した場合、 'undefined' が返されます。

let num;
console.log(typeof num);
>> undefined

typeof 演算子の戻り値は文字列なので、文字列 'undefined' と比較することで変数に格納されている値が未定義値かどうかを判定することができます。

let num;
if (typeof num === 'undefined'){
  console.log('undefined');
}else{
  console.log('not undefined');
}

>> undefined

どちらの方法でも同じように判定することができます。( typeof 演算子については「typeof演算子」を参照されてください)。

-- --

変数に undefined が格納されているかどうかを判定する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。