Замыкания в JavaScript

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ธ.ค. 2024

ความคิดเห็น • 248

  • @vitaliidrapaliuk5652
    @vitaliidrapaliuk5652 5 ปีที่แล้ว +114

    Хочу сказать, что это самое лучшее объяснение замыкания которое я когда либо видео, огромное спасибо!

    • @ilyakorn6662
      @ilyakorn6662 4 ปีที่แล้ว

      +!!

    • @sezarik1663
      @sezarik1663 3 ปีที่แล้ว

      Ты уже стал фронт енд разрабом?

  • @norwinlol
    @norwinlol 5 ปีที่แล้ว +59

    Два дня штудировал литературу/видео по этой теме, везде одна каша. Тут за 15 минут все настолько доступно и понятно. Браво!

  • @rusagutin3466
    @rusagutin3466 3 ปีที่แล้ว +8

    Дружище, спасибо тебе, во всем твоём ролике главные слова для понимания замыкания - это "спрятать переменную". Для меня, это было самым главным объяснением. Люблю когда умеют объяснить простыми словами, а темболее, буквально, парой слов👌👍

  • @pvt_Hudson875
    @pvt_Hudson875 5 ปีที่แล้ว +10

    Как в том анекдоте. Кому то дано рассказывать анекдоты, а кому то нет. Вот кому то дано объяснять, а кому то нет) СПАСИБО Вам за Ваш труд) Доступно, четко, без лишних слов. ЗАМЕЧАТЕЛЬНО!

  • @9Z9Z9Z-legend
    @9Z9Z9Z-legend ปีที่แล้ว +1

    Боже я в тебя влюбился ты легенда ты очень охуительно обьяснил

  • @mikledyuba5048
    @mikledyuba5048 ปีที่แล้ว

    Действительно, Алексей, это финт ушами, говоря твоим языком. Наконец-то я набрел на понятное объяснение замыкания!!!

  • @andriichornyi9143
    @andriichornyi9143 3 ปีที่แล้ว +19

    Объяснение отличное, только стоит добаваить что присваивание "let d=сs2()" функции переменной необходимо для того чтобы сохранить переменную let c, от уничтожения при каждом новом вызове. Если три раза подряд вызвать cs2(), sc2(), sc2() то получим 1, 1, 1. А так если присвоить код функции переменной то переменная сохранит let c, до следующего вызова.

    • @Fill_Andru
      @Fill_Andru 6 หลายเดือนก่อน +1

      Отличное дополнение! Для себя сформулирую: созданная переменная - d это по сути объявление функции (той, что внутри cs2) в глобальной области видимости. Функция есть ее код + набор доступных для нее переменных, т.е. доступна переменная - с. JS "видит" эту связь и поэтому, когда заканчивается строка кода №25, функция cs2() - уже отработала и по сути должна быть уничтожена в памяти. Но благодаря связи (кода функции d и ее возможности использования в своем коде внешней по отношению к ней переменной - с) переменная - с не удаляется из памяти. Этот процесс называют замыканием. Функции CS2 уже нет (она отработала), а ее переменная - с сохраняется (благодаря замыканию). И к ней имеется доступ через функцию замыкания - d(). Если накосячил с выводами - Поправьте)

  • @filin022
    @filin022 ปีที่แล้ว

    Лучшее объяснение. Я как человек из строгой типизации (C#), очень рад, что посмотрел этот видео. Спасибо за пример о "приватном методе", встало в голову железно.

  • @ОлександрБлажчук-ц8ь
    @ОлександрБлажчук-ц8ь 3 ปีที่แล้ว

    Круто! Подача матеріалу на висоті. Єдині уроки, де я не засинаю. ДЯКУЮ!!!
    Навіть собі вже дещо доповнив: )))
    function cs2() {
    let c = 0;
    return function (flag) {
    if (flag == '+') c++;
    if (flag == '-') c--;
    if (flag == '0') c = 0;
    return c;
    }
    }

  • @MrColins710
    @MrColins710 5 ปีที่แล้ว +5

    геніальне пояснення, найкраще що я бачив в неті, дякую!! так тримати

  • @angelikakhodzhaian7843
    @angelikakhodzhaian7843 5 ปีที่แล้ว +6

    Спасибо огромное! Впервые Вас смотрю, и Ваш канал стал первым, который заставил меня подписаться и получать оповещения о новых видео)) Вы объясняете гениально!

  • @ИльяЗакревский
    @ИльяЗакревский ปีที่แล้ว

    Спасибо Вам что делаете такой понятный и контент, теперь все стало придельно понятно особенно когда был приложен пример из реальных разработок (2:50)

  • @mihailismajloff1146
    @mihailismajloff1146 4 ปีที่แล้ว

    Многие преподаватели знают js, но мало кто может донести свои знания до других. У вас из всех, кого я смотрел, это получается лучше всего

  • @АлексейАмосов-ш6т
    @АлексейАмосов-ш6т 5 ปีที่แล้ว +19

    Это лучший дядька из всех учителей, которые мне встречались!!!

  • @povezlo46
    @povezlo46 5 ปีที่แล้ว +2

    Фрагментами понимал, что где и как работает. Только не мог собрать это в одно понимание. Теперь благодаря вам произошло замыкание в голове всех этих пониманий в одно))

  • @yana-khaliullina
    @yana-khaliullina 5 ปีที่แล้ว +11

    Спасибо, я наконец-то разобралась, что такое замыкание. Все очень-очень подробно для таких тугодумов как я :)

    • @sezarik1663
      @sezarik1663 3 ปีที่แล้ว

      ты уже стала фронт энд разрабом?

  • @igorgorobets8567
    @igorgorobets8567 4 ปีที่แล้ว

    Лучшее объяснение, что такое замыкание в JavaScript! Вне конкуренции!

  • @artpaint7109
    @artpaint7109 5 ปีที่แล้ว +1

    Александр, ваши объяснения в JS одни из самых доступных и понятных! Спасибо Вам за труд! Очень достойный контент!

  • @ВладНовак-ы5щ
    @ВладНовак-ы5щ 4 ปีที่แล้ว +1

    Гениально. Дай Бог здоровья этому человеку

  • @АртурИльчишин-ч5м
    @АртурИльчишин-ч5м ปีที่แล้ว

    Господь всемогущий, я сидел, читал, столько сложных слов.
    Это было так доступно и понятно, спасибо огромное!

  • @irynabelaya8191
    @irynabelaya8191 5 ปีที่แล้ว

    Ваши уроки слушать одно удовольствие! Вчера читала в учебникe learn js и поняла, когда смотрела ваше видео, что ничего не поняла из прочитанного) лучше сначала смотреть ваши видео, а я потом читать теорию))

  • @A_A_A182
    @A_A_A182 ปีที่แล้ว

    Спасибо. Очень доступно, особенно если предварительно чуть чуть разобрать лексическое окружение.

  • @555tyle5
    @555tyle5 5 ปีที่แล้ว +1

    Кроме тебя никто не смог мне это объяснить ) Продолжай в том же духе мужик , ты - лучший )

    • @itgid
      @itgid  5 ปีที่แล้ว

      гуд!

  • @natashabatasha897
    @natashabatasha897 3 ปีที่แล้ว

    В 2021 валит Новичок, а не новичка.
    А за видео как всегда спасибо. =)

  • @fsot4524
    @fsot4524 5 ปีที่แล้ว +1

    Спасибо большое, теперь действительно понятно. Всегда приятно, когда человек действительно старается объяснить доступно, а не просто как попало, лишь бы просмотров побольше набрать.

  • @chtotoyest
    @chtotoyest 5 ปีที่แล้ว +1

    У вас талант объяснять сложное просто. Спасибо большое, что делитесь!

  • @mishasv1490
    @mishasv1490 5 ปีที่แล้ว

    Действительно, как мудрёно написано в документации и как просто вы объяснили этот термин, спасибо большое.

  • @annaabramova4458
    @annaabramova4458 5 ปีที่แล้ว

    Долгое время не понимала замыкания, но это видео разложило все по полочкам! Спасибо!!

  • @il_roman8928
    @il_roman8928 5 ปีที่แล้ว

    Прочитал две статьи по замыканиям, посмотрел 5 видео уроков, и только Вам удалось пробить мой дубовый мозг) Спасибо!

  • @Гражданин-в5с
    @Гражданин-в5с 4 ปีที่แล้ว

    Большое спасибо. До этого читал статью про замыкание, 10 перечитал , ничего не понял. Тут 1 раз посмотрел , все понял.

  • @ЕленаБелая-ь9т
    @ЕленаБелая-ь9т 4 ปีที่แล้ว

    Спасибо вам огромное! У вас просто превосходно получается объяснять сложные вещи простыми словами! Это талант! Без вас до меня бы очень долго доходило!

  • @nickolaypanasyuk9711
    @nickolaypanasyuk9711 5 ปีที่แล้ว +1

    Отличный ролик, простейший пример с четко выраженными объяснениями. Благодарю!

    • @itgid
      @itgid  5 ปีที่แล้ว

      Спасибо.

  • @9Z9Z9Z-legend
    @9Z9Z9Z-legend ปีที่แล้ว +1

    Я ПЕРЕСМОТРЕЛ ДО ХУЯ РОЛИКОВ И СПУСТЯ С ТОЛЬКО РОЛИКОВ ПОЯВИЛАСЬ ЛЕГЕНДА КОТОРАЯ ОБЬЯСНИЛА МНЕ ВСЕ НА ПАЛЬЦАХ

  • @MegaTesei
    @MegaTesei 3 ปีที่แล้ว

    Спасибо за ваши ролики. Прекрасно всё понимаю по вашим примерам.

  • @spiteman
    @spiteman 3 ปีที่แล้ว

    Хороший урок, все понятно. Захотелось использовать анонимные функции и новый синтаксис, сначала получилось такое:
    function cs2() {
    let c = 0;
    return () => console.log(++c);
    }
    let d = cs2();
    d();
    d();
    d();
    Потом стал рассуждать, а можно ли как то выкинуть cs2(), ведь к ней почти не обращаемся, пыхтел, пыхтел и все таки с подсказкой справился:
    let d = (function () {
    let c = 0;
    return () => console.log(++c);
    })();
    d();
    d();
    d();
    Понимаю, что код плохо читаемый, но в тоже время, вполне понятный, а самое главное минимум команд. С удовольствием изучил бы еще более короткий вариант.

  • @vladimirvolf3935
    @vladimirvolf3935 4 ปีที่แล้ว

    Лучшее объяснение замыкания на ютубе!!!!

  • @АлександрСилков-ф2ж
    @АлександрСилков-ф2ж 10 หลายเดือนก่อน

    я почемуто создал для себя ассоциацию что замыкание это - замыкание данных между функциями, но тут ..."функцию замыкают на области видимости".. ,четко!.. ВЕЛИКИ ДЗЯКУЙ!.

  • @followmagnus9775
    @followmagnus9775 4 ปีที่แล้ว

    *Шикарное объяснения автора! Доступно и понятно! Ещё и с объяснениями практического применения. Лайк и подписка*

  • @GANGST1ER
    @GANGST1ER 4 ปีที่แล้ว +1

    Не плохое объяснение, спасибо.
    // пример замыкания функции
    function urlGenerator(domain) {
    return function(url) {
    return `${url}.${domain}`
    }
    }
    const comUrl = urlGenerator("com")
    const ruUrl = urlGenerator("ru")
    console.log(comUrl("google"));
    console.log(comUrl("netflix"));
    console.log(ruUrl("google"));
    console.log(ruUrl("netflix"));

  • @kamik0t0_yt83
    @kamik0t0_yt83 4 ปีที่แล้ว +1

    Спасибо огромное! Реально тут сразу ясно. Пришел добрый умный дядя и сказал всему интернету что из себя представляет замыкание.

  • @aleksandryudaiev9673
    @aleksandryudaiev9673 4 ปีที่แล้ว

    Спасибо. Сколько уже уже учу JS уже даже работаю друном толька сейчас понял что такое замыкание функции. Спасибо. Замыкание функции в Javascript. Function Closures.

  • @ayanasultanova2030
    @ayanasultanova2030 4 ปีที่แล้ว

    Самое лучшее объяснение этой темы!!!!

  • @mikewazowski7526
    @mikewazowski7526 4 ปีที่แล้ว

    Наконец-то поняла замыкание. Спасибо большое, Александр!

  • @ericraudy
    @ericraudy 5 ปีที่แล้ว +3

    Как всегда на высоте! Кратко, понятным языком и по делу.

  • @МаксимКлок-с8с
    @МаксимКлок-с8с 4 ปีที่แล้ว

    Отличное объяснение максимально простыми словами

  • @КолёКолё-ю2щ
    @КолёКолё-ю2щ ปีที่แล้ว

    Огромное спасибо за такое понятное объяснение!😊

  • @mrECMAScript
    @mrECMAScript 5 ปีที่แล้ว +1

    Тот канал, где ставлю лайк на первых секундах, а потом смотрю видео))

  • @Viktorres1
    @Viktorres1 3 ปีที่แล้ว

    Спасибо Алекс! Теперь я понял смысл использования замыкания и областей видимости.

  • @demetrio_dede
    @demetrio_dede 5 ปีที่แล้ว +4

    Спасибо! Все крайне понятно и очень доступно объяснено

    • @itgid
      @itgid  5 ปีที่แล้ว

      спасибо!

  • @yolonaoss2411
    @yolonaoss2411 5 ปีที่แล้ว +4

    Это очень крутое объяснение. Спасибо, я стал знать больше, благодаря вам:)

  • @pustotaxoxo
    @pustotaxoxo 4 ปีที่แล้ว

    Спасибо большое, 2 дня не понимал эту тему, смотрел много видео. Но тут за 18минут все доступно объяснили, благодарю

  • @ervinabliamitov2149
    @ervinabliamitov2149 4 ปีที่แล้ว

    Спасибо, мужчина!!
    Хоть и повторял одно и то же, это лучше чем заумные бесполезные объяснения)

  • @andyhadson8278
    @andyhadson8278 3 ปีที่แล้ว

    Спасибо большое за доступное объяснение!

  • @denis.ignat7
    @denis.ignat7 5 ปีที่แล้ว

    Спасибо большое - все доступно и понятно! Бывает, вот так смотришь - всё вокруг да около, а толком ничего не ясно!

  • @labero3188
    @labero3188 3 ปีที่แล้ว

    Отличное объяснение, огромное вам спасибо!

  • @TONY_BERG_MINSK
    @TONY_BERG_MINSK ปีที่แล้ว

    Класс! Доступно и просто изложено!

  • @hrantharuthiunian1011
    @hrantharuthiunian1011 4 ปีที่แล้ว

    Спасибо за самое лучшее объяснение !!!

  • @АндрейХантя-с3о
    @АндрейХантя-с3о 5 ปีที่แล้ว

    Просто огонь, 3 дня пытаюсь разобраться с этой темой, сейчас понял что к чему) Спасибо, лайк + подписка!)

  • @marinaermilova7912
    @marinaermilova7912 5 ปีที่แล้ว

    Спасибо за Ваши уроки - они прекрасны и понятны. Очень здорово.

  • @StepanVorobiov
    @StepanVorobiov 5 ปีที่แล้ว

    почему ни кто (доходчиво) не упоминает этот момент 10:30. Этож самое важно.
    Спасибо! благодаря вашему видео, до конца понял что к чему (по крайней мере саму концепцию)!

  • @Vlad6817
    @Vlad6817 4 ปีที่แล้ว

    Красавчик! Отлично объясняешь!!

  • @Epenckorn
    @Epenckorn 4 ปีที่แล้ว

    Спасибо за максимально подробное разъяснение)
    Но, думаю, можно объяснить ещё короче: "Замыкание - это функция, написанная, как класс с одной функцией" и показать конечную запись. Полагаю, было бы достаточно)
    По сути, получается просто в d хранится изолированное пространство имён.

  • @kunduzkonurbaeva256
    @kunduzkonurbaeva256 6 หลายเดือนก่อน

    Thank you so much. You had explained very simply.

  • @Estetus91
    @Estetus91 ปีที่แล้ว

    Гениально! дай бог здоровья ))

  • @ВиталяДемиденко
    @ВиталяДемиденко 4 ปีที่แล้ว +1

    Интересный момент, который можно не заметить и, возможно, он улучшит понимание. Для замыкания должна быть передана в переменную уже вызванная функция, т.е. со скобками *let a = func( )* , и после чего, тоже вызвана со скобками *a()* , тем временем как обычная функция при таком синтаксисе бросит ошибку

  • @KuKu_RuKu88
    @KuKu_RuKu88 4 ปีที่แล้ว

    cs 2 )))))) ....отличная аналогия. Объяснили хорошо и доступно, сразу понял на примере, спасибо еще раз !!!

  • @Wyraxx
    @Wyraxx 4 ปีที่แล้ว +2

    Дуже (дуже (доступно пояснив));
    console.log('Дякую!');

  • @jsb7239
    @jsb7239 5 ปีที่แล้ว

    True JS Превосходный плейлист!

  • @dimabonds9850
    @dimabonds9850 3 ปีที่แล้ว

    потрясающее объяснение!

  • @NovgorodskyLeatherCraft
    @NovgorodskyLeatherCraft 2 ปีที่แล้ว

    12:52 - а если какой то редиска сделает d = 6? Переменную с то защитили, но редиска убил d... Если вы объявили переменную через let, разве у редиски не вызовет ошибки повторное объявление переменной через let?

  • @МакарЛеонов-л1и
    @МакарЛеонов-л1и ปีที่แล้ว

    уже разобрался, но если бы увидел это видео раньше, то процесс понимания был бы гораздо легче и быстрее)

  • @nickbokhan5390
    @nickbokhan5390 5 ปีที่แล้ว +5

    Лучшее объяснение, что встречал. Спасибо!

  • @xenia.m
    @xenia.m 5 ปีที่แล้ว

    Очень круто рассказываете! Понятно, доступно и интересно слушать.

  • @yarik83men51
    @yarik83men51 4 ปีที่แล้ว

    Доступно. Спасибо. Что просто то гениально.

  • @данилкононов-э3в
    @данилкононов-э3в 5 ปีที่แล้ว

    Очень все круто! Спасибо!)
    Но хотелось бы увидеть еще чуть более сложный пример с объяснениями) что бы понимать где еще и как именно я(очень-очень новичек) могу использовать замыкание)

  • @Давид-п8и
    @Давид-п8и 5 ปีที่แล้ว

    Спасибо! Замыкания - очень важная вещь! Раньше не использовал! Теперь буду! 👍👍👍

  • @anovik72
    @anovik72 5 ปีที่แล้ว

    Спасибо за отличный плейлист с крутым объяснением!

  • @SlavaCh
    @SlavaCh 5 ปีที่แล้ว +29

    Хех, уже год регулярно использую замыкания, не зная что они называются замыканиями)

  • @СергейЯчменников
    @СергейЯчменников 5 ปีที่แล้ว

    вы преподаватель от бога) правда

  • @ДовгальДима
    @ДовгальДима 4 ปีที่แล้ว

    Хорошо разжовано, спасибо за старания, было очень интересно!

  • @vladk3111
    @vladk3111 4 ปีที่แล้ว +3

    Добрый день. Позвольте вопрос. Может и тупой, но я только учусь :)
    Если без замыкания, то в первом случае мы создавали переменную let a = 0, а потом переходили к созданию функции. Это типа плохо, т.к. создаётся "а" - глобальная переменная, все дела, лучше поменьше глобальных переменных, а то её кто-то случайно может переназначить. НО в случае замыкания мы все равно создавали новую переменную d. Это не считается?? Её же тоже может кто-то переназначить... Спасибо.

    • @itgid
      @itgid  4 ปีที่แล้ว

      напишите в телеграмм

  • @ericshishko766
    @ericshishko766 5 ปีที่แล้ว

    Хорошое, понятное объяснения замыканий. Спасибо.

  • @EugenePorubenko-q2e
    @EugenePorubenko-q2e 5 ปีที่แล้ว +2

    Спасибо за доступное обьяснение!

    • @itgid
      @itgid  5 ปีที่แล้ว

      Рад, что помог!

  • @ИванИванов-у3ч4м
    @ИванИванов-у3ч4м 4 ปีที่แล้ว

    Все просто и понятно, как обычно. Спасибо )

  • @nataliarusu2265
    @nataliarusu2265 5 ปีที่แล้ว +2

    почему нам надо функцию сохранить и вызвать через переменную d? почему вызов функции cs2() несколько раз не дает результата как d()?

    • @il_roman8928
      @il_roman8928 5 ปีที่แล้ว

      потому что в d сохраняется значение c при каждом ее вызове

  • @enfermera-y9q
    @enfermera-y9q 4 ปีที่แล้ว

    Большое спасибо, вы прекрасно объясняете!

  • @Nazarioo0
    @Nazarioo0 5 ปีที่แล้ว

    очень хорошо объясняете. Спасибо за работу!

  • @СашаКотова-н2з
    @СашаКотова-н2з 4 ปีที่แล้ว

    Объяснение на 10-ку. Спасибо!

  • @Alex-scc
    @Alex-scc 4 ปีที่แล้ว

    Извините, я недопонял, в цепочке вложенных функций переменная доступна всем или только между родительской и дочерней? Если объявить функцию A, создать в ней переменную aA, и функцию B, которая в свою очередь возвращает функцию C, будет ли в функции C доступна переменная aA, объявленная в "корневой" функции? Иными словами, для функции C область видимости расширяется до B или до A?

  • @dali1ize
    @dali1ize 5 ปีที่แล้ว

    Вы лучший, спасибо за ваше время!

  • @russellwest8775
    @russellwest8775 5 ปีที่แล้ว

    Гениальный преподаватель, спасибо вам.

  • @mtis1466
    @mtis1466 4 ปีที่แล้ว +1

    но теперь осталась проблема с переменной "d" - которая теперь глобальная и её тоже можно изменить/перезаписать. Не понимаю логики зачем делать "приватной" одну глобальную переменную, при этом создавая другую

  • @yuriilukianovych8660
    @yuriilukianovych8660 3 ปีที่แล้ว

    Спасибо! Очень доступно 👍👍👍

  • @Дмитрий1066
    @Дмитрий1066 3 ปีที่แล้ว

    Спасибо, всё очень понятно. Автор супер крутой.

  • @digitalturkistan1857
    @digitalturkistan1857 5 ปีที่แล้ว +3

    Здравствуйте я немогу понять обьект event можете отдельный урок на эту тему сделать почему его передает в параметр функции

  • @alexeysapego585
    @alexeysapego585 3 ปีที่แล้ว

    Вот это объяснение! Отец!

  • @НанаСерова
    @НанаСерова 3 ปีที่แล้ว

    Идеально объяснили, спасибо)

  • @alexriddle2744
    @alexriddle2744 4 ปีที่แล้ว +1

    Здравствуйте, спасибо за урок, объясните пожалуйста, почему каждый раз при вызове функции d, которой присвоена функция cs2 нет переинициализации переменной c? Ведь первой строчкой в функции cs2 идет объявление переменной c = 0, почему в таком случае при каждом вызове функции она инкрементируется, а не начинается с нуля?)

    • @antonkanevets4994
      @antonkanevets4994 3 ปีที่แล้ว

      тоже об этом подумал

    • @alexriddle2744
      @alexriddle2744 3 ปีที่แล้ว

      @@antonkanevets4994 Нашел по итогу ответ, все из-за сборщика мусора. Переменная не удаляется из памяти т;к на эту переменную есть ссылка

  • @yaroslavzef7267
    @yaroslavzef7267 4 ปีที่แล้ว

    Спасибо! Реально круто поясняешь

  • @ЛежимБомбим
    @ЛежимБомбим 2 ปีที่แล้ว

    Можно вопрос - зачем? Ведь точно так же как объявляется глобальная переменная в случае без замыкания, мы объявляем другую глобальную переменную которой присваиваем функцию. Получается только больше кода с одним результатом - имеется глобальная переменная, которую в обоих случаях можно переопределить.