Так как вы делаете обратный цикл, я бы использовал вместо него while
.
var i = chars.length;
while( i-- ) {
//...and so on
}
Это будет быстрее, даст вам правильное значение i
внутри телацикла, и все равно завершит цикл в нужное время.
Причина, по которой это работает, заключается в том, что я некоторое время использовал пост-декрементный оператор.Это означает, что значение i
здесь:
while( i-- )
всегда будет на 1 больше, чем здесь:
{
// ...and so on
}
Так что, если общая длина равна 5
,у вас будет правильный индекс 4
внутри блока.
К концу, когда i
равен 1
в оценке, он будет 0
в блоке, указывая на последнюю итерацию, который получает элемент по первому индексу.
При следующем проходе будет оцениваться i
при 0
, а код в блоке не будет выполнен.