На самом деле не имеет существенной разницы, какой цикл вы используете. каждая книга, которую я прочитал, говорит об этом. в вашем примере может быть разница, потому что вы используете декрементный цикл в цикле while. это происходит быстрее, потому что оценивается только одно условие.
например, while(i<100)
медленнее, чем while(i--)
для вашего цикла for вы можете сохранить длину перед циклом и работать с этим значением вместо того, чтобы извлекать его каждый раз. это также даст вам некоторую оптимизацию производительности.
var fooLength = foo.length;
for(var i=0 ;i<= fooLength;i++){
}