Почему переменная цикла во время итерации - добавление элементов в массив ведет себя так?

уважаемые коллеги, кто может объяснить, почему во время использования данного цикла:

let arr = [];
for (let i = 0; i < 9; i++) {
    arr[i] = arr.push(i);
}
console.log(arr);
Консоль выведет: (9) [1, 2, 3, 4, 5, 6, 7, 8, 9];

А при использовании вот такой записи:

let arr = [];
for (let i = 0; i < 9; i++) {
    arr.push(i);
}
console.log(arr);
Консоль выведет: (9) [0, 1, 2, 3, 4, 5, 6, 7, 8]

Правильно ли я рассуждаю, что всё дело в том, как работает интерпретатор JS с оператором 'Инкремента/декремента'. Или же тут ещё замешана особенность итерации в JS с данными операторами?


Ответы (1 шт):

Автор решения: Алексей Шиманский

Ничего хитрого тут совсем нет. Как и многие функции push возвращает значение. А возвращает она "количество элементов в массиве" после совершения операции. Вот и получается, что после первой вставки там 1, после второй - 2 и т.д.

→ Ссылка