jQueryの空判定

jQueryのソースを眺めていたら、オブジェクトの空判定をするコードを見つけた。

isEmptyObject: function( obj ) {
  for ( var name in obj ) {
    return false;
  }
  return true;
},

普通ならnullチェックをするような処理である。しかし、javascriptにはnull以外にもundefinedという未定義値が存在する。これらを一個づつチェックしていく方法ももちろん正しい。

javascriptのfor/in文は、オブジェクトのプロパティごとにループを回す。プロパティが存在すればループ内部が実行し、falseを返す。オブジェクトが空の場合、プロパティが存在しないのでforループそのものが実行されず trueが返される。

仮にループが実行されたとしても、ループ内処理は、たった一回しか実行されない。この文脈においてfor/in文はif文と同じ役割を果たしているのだ。

コメントをどうぞ。

TrackBack URI :