На основании документации .pop()
возвращает:
Удаленный элемент из массива; undefined
если массив пуст.
Так что технически на каждой итерации код удаляет последний элемент из массива, который изменяет свойство .length
.
Возможно, хорошее представление что происходит с расширенным индексом из l oop:
var arr = [0,1,2,2,3,4,5,5,6];
for(let i = 0; i < arr.length; i++) {
let item = arr.pop()
console.log({i, item, length: arr.length});
}
Все вместе for
l oop выполнял блок пять раз, что представляет последние пять элементов из вашего массива, если вы читаете массив сзади. Вот почему у вас есть 6,5,5,4,3
в качестве вывода.
Надеюсь, это прояснится!