Помогите написать такую же функцию используя метод bind в setTimeout

есть функция, которая выводит от 0 до 9

function counter() {
  for (let i = 0; i < 10; i++) {
        setTimeout(function() {
            console.log(i);
        }, 10);
    }
}

нужно написать такую же используя метод bind в setTimeout

Помогите пожалуйста!!!!


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

Автор решения: SwaD

Например, можно сделать так:
Суть метода bind - прикрепить контекст(окружение) в котором она вызывается.
Почитайте про метод bind

function print() { // Создаем функцию, которая будет выводить свой контекст
    console.log(this);
}

function counter() {
    for (let i = 0; i < 10; i++) {
        // К функции биндим контекст. 
        // Т.к. метод bind возвращает нам новую функцию, 
        // ее можно сразу передать в setTimeout
        // Или создать переменную
        // допустим const newPrint = print.bind(i);
        // И уже ее передавать в setTimeout
        setTimeout(print.bind(i), 10);
    }
}

counter()

→ Ссылка