要素にぶら下がっているノードの中から、該当するものを集めてくる関数

もっとかっこよくかけたらなぁ〜
だれか教えてくれないかな・・・。

var get = (function ( ) {
  return function ( node, type, val, depth ) {
    var n = node.firstChild;
    var d = n ? 1: 0;
    var buf = [ ];
    var m;
    
    if( 'undefined' === typeof depth || 1 > depth )
      depth = 99;
    
    while( d ) {
      if( n[ type ] == val ) buf.push( n );
      m = n;
      if( d < depth && ( n = n.firstChild ) )
        d += 1;
      else
        while( !( n = m.nextSibling ) && --d && (m = m.parentNode) );
    } 

    return buf;
  };
})();