javascript の undefined 判定について。厳密な判定が不要な場合は簡易判定で済ませよう。

簡易判定

undefined は内部的に false に変換されます。なので、変数が undefined であれば if(変数) で false が返ってきます。

if(variable) {
  // variable が undefined であればここには入りません 
}

基本的にはこのエラーチェックで十分です。しかし厳密にundefinedの判定をしたい場合には、この処理では足りません。

厳密な判定

変数に0かfalseが入ってくる場合は、 undefinedと同様に if(!変数) で true が返ってきます。

if(variable) {
  // variable が undefined であればここには入りません
  // variable が 0 でもここには入りません
  // variable が false でもここには入りません
}

undefined であることを判定したいときには次のように書きます。

if(variable === undefined) {
  // variable が undefined であればここに入ります
}

// または
if( typeof undefined === 'undefined'){
  // variable が undefined であればここに入ります
}

まとめ

変数に undefined が入っているというのは、変数に値が入っていないということです。値が入っていない場合と0やfalseが入っている場合を分けて判定したいというのは稀です。ですので基本的には簡易なundefined判定で十分です。不必要な厳密な判定は残業のもとになるので、簡易で十分な判定は簡易判定で済ませましょう。