querySelectorAllで取得した要素オブジェクトがfor・・inで扱えない

querySelectorAllで取得した要素オブジェクトをfor・・inを使って配列順に処理しようとしたが、意図したように動作しない。
調べてみると、querySelectorAllでは要素オブジェクト群以外にlengthキーが含まれていて、これにより本来のループより1回多く回っていた。

forループを次のようにすると意図した動きになった。

  var al = document.querySelectorAll('li a');
  for(var idx = 0; idx<al.length; idx++){
    var anchr = al[idx];
    anchr.addEventListener("click",show,false);
  }

詳しいことは次のサイトを参照してください。
querySelectorAllで帰ってきたNodeListを外部ライブラリを使わずにforEachしたい
document.querySelectorAllの要素にforEachは使えない