Задать вопрос
@dron112

Где здесь замыкание?

Для меня замыкание это когда функция объявлена в одной области видимости, а вызывается в другой, но в момент вызова имеет доступ к тем переменным которые находятся в первой области видимости ?

Я знаю что в данном примере есть замыкание, но не могу его точно найти.
Так как не понимаю что тут вызывается вне своей области видимости, по-моему здесь нет замыкания, а есть обычный поиск переменной по лексической области видимости. Но один человек сказал что тут точно есть замыкание. Помоги разобрать этот код

- - Он сказал на 55 минуте

let arr = [1, 2, 3, 4, 5]

for(var i = 0; i <= arr.length; i++ ) {
    
    (function(y){
        setTimeout(() => {
            console.log(y)
        }, 1500)

    }(i))
    
}
  • Вопрос задан
  • 158 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
У тебя есть immediately invoked function
(function(y){ }(i))
в которую ты передаешь i в качестве параметра
И есть коллбек
() => { console.log(y) }
который выполняется асинхронно (на самом деле не важно как он выполняется)
В это колбеке ты используешь переменную y которая взята из области IIFE, которую твой коллбек фактически "замкнул" от уборки сборщиком мусора, иначе бы она была убрана значительно раньше.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы