Как работает в этом коде length?

Условие нужно эмулировать unshift. Задача решена. Почему при написание в input слово к примеру "hello" он его напишет. Так как я же указал в цикле length. И еще почему если не указать length, а к примеру t8[i] = d8[i] то он затрет новый массив. Подскажите пожалуйста

https://codepen.io/1rocky12/pen/WNrYXVa

// Task 8
// Напишите функцию f8, которая эмулирует работу метода unShift - добавляем значение из i-8 в начало массива d8.
// Во всех задачах где говорим второй, третий и т.д. имеем ввиду индекс
// Вывод - по нажатию кнопки b-8
// Вывод в out-8

let d8 = [2, '4', 12, 67, 'hello'];

function f8() {
    let input = document.querySelector(".i-8");
    let t8 = [];
    t8[0] = input.value;
    for (let i = 0; i < d8.length; i++) {
        t8[t8.length] = d8[i];
    }
    d8 = t8;
    console.log(d8)

    showArr('.out-8', d8);
}

document.querySelector('.b-8').onclick = f8;
function showArr(domElem, arr) {
    let out = '';
    for (let i = 0; i < arr.length; i++) {
        out += arr[i] + ' ';
    }
    document.querySelector(domElem).innerHTML = out;
}
<section>
            <p><b>Task 8.</b></p>
            <p>Напишите функцию f8, которая эмулирует работу метода unShift - добавляем значение из i-8 в начало массива
                d8.</p>
            <pre>
             d8 = [2,'4', 12, 67, 'hello'];
        </pre>
            <div class="form-control">Эмулируем unShift <input type="text" class="i-8"></div>

            <button class="button-primary b-8">Task-8</button>
            <div class="out-8"></div>
            <div class="out-8-1"></div>
        </section>


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

Автор решения: Aziz Umarov

Все просто посчитайте длину массива t8 перед началом цикла. Она равна 1 а если указать i переменную то она начинается с 0 так вас и получается затирание, если хотите без t8[t8.length] то подставьте i+1. t8[i+1] = d8[i]

→ Ссылка