let i = 1
function counter() {
i = i+1
}
counter()
return i
}
самый простой пример замыкания, но вроде есть и посложнее
если переписать на function count() { let i = 1 return function counter() { i = i+1 return i; } } const counter = count() то будет тру замыкание. count возвращает функцию counter. i в count после этого должен перестать существовать, но counter ссылается на i (замыкается), поэтому переменная живет. если ты сохранишь потом результат возврата count (функцию) в переменную, ты можешь вызывать ее и она будет увеличивать i. причем ты можешь несколько таких счетчиков сохранить, и у всех будет свое замыкание
пиздеж
все же дали по жопе ;)
Спасибо, это то что мне нужно было
по факту это просто сайдэффект
чет я запарился есть еще методы считать количество рекурсий до последней помимо замыкания?
лучше разберись, замыкания полезная штука
это всегда с радостью, но мне кажется будто не подходит в этом случае там куча тестов с разными вводными данными, а срабатывает то же замыкание, хотя с новыми данными должно срабатывать с нуля я раздумывал о динамическом названии функции по вводным данным, но это уже упоротость с конструктором функций
мне кажется, это в любом случае какой-нибудь счетчик снаружи. можно класс создавать каждый раз, с методом и счетчиком. или ты просто баг написал. есть еще вариант создать поле в самой функции function pizda() {} pizda.count = 123123 но это уже дичь какая-то
мне кажется лучше будет использовать сахарок классов и статические свойства __ а стоп, ты это в самом начале сказал __ классы в жс это функция, а функция объект, ее
Обсуждают сегодня