@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))
    
}
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
У тебя есть immediately invoked function
(function(y){ }(i))
в которую ты передаешь i в качестве параметра
И есть коллбек
() => { console.log(y) }
который выполняется асинхронно (на самом деле не важно как он выполняется)
В это колбеке ты используешь переменную y которая взята из области IIFE, которую твой коллбек фактически "замкнул" от уборки сборщиком мусора, иначе бы она была убрана значительно раньше.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Artezio Санкт-Петербург
от 160 000 до 220 000 ₽