Не факт, что length реализовано, как getter. Даже можно сказать, что скорее всего это обычное свойство, потому что Array.prototype.push.call(obj, 1) добавит length к obj во всех браузерах, поэтому обращение к length массива происходит не дольше, чем к любому другому свойству объекта, содержащему числовое значение, которое не пересчитывается каждый раз. Вот с NodeList уже другое дело, это динамическая структура.
Но я люблю гоняться за сверх скоростями и обычно пишу так:
var i = -1, length = array.length;
while (++i < length) {
array[i]
}
если возможно, так:
var i = array.length;
while (i--) {
array[i]
}