Math speaks for itself.
Using variable instead of length is more than 20 times faster. So, conclusion, undoubtedly, is that setting variable to array length and then using it in a loop is the way to go, especially on large iterations.
Here is a benchmark test:
Without length:
var st:Number = getTimer();
for (var i:int = 0; i < 1000000; i++ ) {
}
trace(getTimer() - st);
Trace returns something around 12 ms
With array length:
var array:Array = [];
for (var j:int = 0; j < 1000000; j++)
{
array.push(1);
}
var st:Number = getTimer();
for (var i:int = 0; i < array.length; i++)
{
}
trace(getTimer() - st);
Trace returns about 220-224 ms
This is a clear confirmation of what to use.