JavaScript v.2.0. Замыкания

Поділитися
Вставка
  • Опубліковано 5 січ 2025

КОМЕНТАРІ • 169

  • @ДмитроСтахов-с9ш
    @ДмитроСтахов-с9ш 5 років тому +187

    Тот случай, когда человек хочет, чтоб другие поняли замыкания, а не показать что он их знает. Очень доходчиво объясняете, спасибо

  • @oleh78614
    @oleh78614 4 роки тому +84

    Сложно? Нет. Нужно просто уметь доходчиво объяснить))). Три дня , n'ое кол-во материала и о чудо нужный ресурс.Спасибо, ты супер.

    • @itgid
      @itgid  4 роки тому +7

      Спасибо

    • @foobar-fhky
      @foobar-fhky 3 роки тому +6

      Тоже три дня читал умные статьи и ничего не понял, зачем это нужно. Здесь 20 минут и все понятно

  • @trippie7014
    @trippie7014 3 роки тому +34

    Господи спасибо. Самые полезные 20 минут в моей жизни

  • @bohdanovk
    @bohdanovk 4 роки тому +18

    Я однажды понял что такое замыкание, но так и понял почему такое название. И только сейчас допер, что замыкается ОБЛАСТЬ ВИДИМОСТИ. Большое спасибо

  • @fantast2568
    @fantast2568 5 років тому +33

    "Замыкания" - это замыкание области видимости на какой - то объем (scope) переменной. 18:50

  • @АлексейК-м3л
    @АлексейК-м3л 4 роки тому +1

    Наверное самый доступный видос по замыканиям. Даже лучше Минина.

  • @elifas2012
    @elifas2012 4 роки тому +8

    У вас талант объяснять сложные вещи простым языком

  • @ДмитроКазаров
    @ДмитроКазаров 3 роки тому +2

    Спасибо большое. Лучшее обьяснение что я нашел. Даже в платных курсах эту тему не объяснили так понятно как Вы. Дай Бог Вам здоровья!!!

  • @ism5751
    @ism5751 4 роки тому +4

    Вообще все видео Александра офигенно понятные! Если мне попадается тема,где что-то догнать не могу,сразу лезу искать здесь на канале ваши объяснения😊и после этого,всё сразу по полочкам раскладывается

  • @ekaterina2073
    @ekaterina2073 3 роки тому

    как всегда гениально и просто объяснил, даже тупой бы понял 👍🏻 ТАЛАНТ!

  • @АлександрМерный-м1ч

    Александр, ваш канал - клад и я его нашел. Столько информации и все бесплатно!! Респект и уважение!

  • @_pheax
    @_pheax 2 роки тому

    очень понятно, спасибо Александр,,, доходчиво и на простых примерах

  • @lordunitaz
    @lordunitaz 3 роки тому +2

    Самый адекватный и понятный ролик по замыканиям. Спасибо тебе, золотой человек.

  • @timurbulaaras75
    @timurbulaaras75 2 роки тому

    Супер. В первый раз просмотра было не понятно, второй - просто наслаждение для понимания. Благодарю)))

  • @KanalReal
    @KanalReal 2 роки тому

    Прошёл курс по JS - все хорошо. Можно приобретать. Особенно понравилось кол-во практики и поддержка в телеграмме и на форуме.

  • @yarik83men51
    @yarik83men51 4 роки тому +2

    Ваше желание научить очень внушительное... Понятно, удобно, очень четко.

  • @Azzagtot
    @Azzagtot 4 роки тому +7

    Для меня всегда было загадкой нагнетание ветра вокруг Замыкания. Это же элементарная вещь, что нам наглядно продемонстрировал своим изложением Александр. В литературе же его описывают такими страшными словами, что студент в панике просто перелистывает дальше...

  • @ВикторТуманов-р9з
    @ВикторТуманов-р9з 3 роки тому +2

    очень крутой мужик , многое понятно объясняет!! спасибо.

  • @ЕвгенийТкачук-й4к
    @ЕвгенийТкачук-й4к 2 роки тому

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

  • @ВалерийАрутюнов-д3н

    гениальная подача! 20 минут и все понятно)

  • @kitten20811
    @kitten20811 5 років тому +1

    Всегда удивлялся Вам как Вы сложные вещи умеете объяснять просто! Вы большой молодец !

  • @АлисаИкс-н2ы
    @АлисаИкс-н2ы 2 роки тому

    Храни вас вселенная !!!! Самое адекватное объяснение вообще из всех возможных!!!!!

  • @ТимурТокумов-и1к
    @ТимурТокумов-и1к 3 роки тому +2

    Круто, очень доступно и понятно объясняете! Спасибо!

  • @gapirovo97
    @gapirovo97 3 роки тому +1

    Спасибо тебе человек! Программист с 10 летним опытом не смог мне объяснить, а тут 20 мин а вуаля)))

  • @ksusha3010
    @ksusha3010 4 роки тому +6

    Алекс, я, наверное, не первая это пишу, но в русскоязычном ютубе вы - лучший. Знаю, о чем говорю, так как пришлось перелопатить много каналов, пока на ваш не наткнулась.

    • @itgid
      @itgid  4 роки тому +1

      Ksusha Sh спасибо

    • @ИгорьНово
      @ИгорьНово 3 роки тому

      Истинная правда! Всяких Мининов много, а вот такой АЛЕКСАНДР - ОДИН!!! =)

  • @irinasname
    @irinasname 3 роки тому

    чудовий матерiал. Дуже дякую))

  • @vikingulfhednar4510
    @vikingulfhednar4510 2 роки тому

    Аааа спасибо тебе добрый человек, единственное видео, после которого я абсолютно четко понял что такое замыкание! Благодарю!!!! Спасибо 🍺

  • @sion4988
    @sion4988 2 роки тому

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

  • @NataliiaLutsenko-t1m
    @NataliiaLutsenko-t1m 5 років тому +3

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

  • @dimka_shchepa
    @dimka_shchepa 3 роки тому +2

    капец!))) как четко всё прям разжевано))) благодарю Вас за это видео))

  • @ПавелРостовцев-з7п
    @ПавелРостовцев-з7п 3 роки тому +1

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

  • @yuutsy5398
    @yuutsy5398 3 роки тому +1

    Потрясающе! Спасибо за подробные объяснения

  • @АртурАстежев
    @АртурАстежев 5 років тому +1

    Класс. Я и раньше в принципе понимал. Но теперь все стало как пять копеек. Очень доступно объясняете.

  • @yarik83men51
    @yarik83men51 4 роки тому +1

    Как всегда на высоте качество контента.

  • @АлександрМитькин-ь6в

    Шикарные уроки. Отлично преподаёте!

  • @БогданІвахненко-ь8ч

    Вау
    Просмотрел до этого 3 объяснения от других блогеров, но только тут я понял
    Курсы, которые реально стоят того, что бы их купить
    Спасибо!

  • @TV-cq5sc
    @TV-cq5sc 2 роки тому

    Лайк подписка и пожизненная благодарность!!!
    Алекс спасибо Вам!! я за 20 минут понял больше, чем за неделю зубрежки документации!

  • @elenalevanova6022
    @elenalevanova6022 3 роки тому

    Самое понятное объяснение из всех услышанных!

  • @кириллроманычев-ш3щ

    Спасибо, вы очень помогли)) от других авторов материалы на эту тему довольно непонятные.

  • @ХристинаШевчук-ы9щ
    @ХристинаШевчук-ы9щ 5 років тому +1

    Дуже потрібна штука! Дякую

  • @coldy7382
    @coldy7382 5 років тому +1

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

  • @alleksgrinn7227
    @alleksgrinn7227 5 років тому +2

    Вот за это я и люблю JavaScript .., всегда есть над чем по-извращаться...
    Спасибо !

    • @DrZlad
      @DrZlad 5 років тому

      Alleks Grinn ахахах))

  • @galizaslavsky3748
    @galizaslavsky3748 4 роки тому +1

    Большое спасибо. Объяснение очень четкое и ясное.

  • @artempronenko5105
    @artempronenko5105 5 років тому +18

    Здравствуйте! Давно смотрю ваш канал. И советую всем кто хочет изучить js. потому что на всем ютуб нет более полезного канала. Огромное спасибо вам за ваши труды!!
    И хотел задать вопрос: Не планируете ли вы записать видео о drag and drop. Так как все видео на ютубе о этой теме давно устарели, их очень мало, и почти все на английском языке. А в HTML Появился атрибут "draggable" интересно было бы посмотреть его в связке с drag and drop.
    как вариант - сделать урок про drag and drop в виде "пишем пазлы на js"

  • @ВолодимирПриходько-л2л

    Прекрасный курс! Впрочем, как и Ваши предыдущие курсы :)

  • @Fovaxus
    @Fovaxus 4 роки тому +2

    Очень хорошее объяснение, спасибо вам большое.

  • @galayda_taras
    @galayda_taras 3 роки тому

    Спасибо за полезнейшее видео!!!

  • @NemoKiss
    @NemoKiss 2 роки тому

    Спасибо!!! Оказалось очень просто всё!

  • @АлександрСеменюк-у7п
    @АлександрСеменюк-у7п 5 років тому +2

    И как я раньше не мог этого понять. Спасибо

  • @dobletroy8367
    @dobletroy8367 3 роки тому +1

    Просто шикарно...Лайк

  • @sergeyf466
    @sergeyf466 3 роки тому

    Спасибо за Ваш труд!

  • @АлексейФокин-г8м
    @АлексейФокин-г8м 3 роки тому

    Круто! Спасибо! Я понимал но сейчас разобрался

  • @m.efremova4649
    @m.efremova4649 3 роки тому

    Невероятно!! Спасибо Вам!!

  • @Fenjkeee
    @Fenjkeee 4 роки тому +1

    Спасибо за урок.

  • @kenanhaciyev3759
    @kenanhaciyev3759 2 роки тому

    Лучшее объяснение

  • @olegisachenko5945
    @olegisachenko5945 4 роки тому +1

    Всё очень доходчиво, спасибо.

  • @АлтынайШангитбаева-ч7с

    Супер поняла наконец то респект автору

  • @Астролайф-э9ю
    @Астролайф-э9ю Рік тому

    лучший! благодарствую

  • @MegaTesei
    @MegaTesei 3 роки тому

    Прекрасное объяснение!

  • @awenn2015
    @awenn2015 4 роки тому +6

    Я думал что замыкания это что то страшное , а это просто замыкание области видимости )

  • @TOPMukS
    @TOPMukS 3 роки тому

    Спасибо! Теперь действительно понятно

  • @dabroful
    @dabroful 2 роки тому

    Наконец-то я понял! Спасибо!

  • @nemirovandrei
    @nemirovandrei 2 роки тому

    Замкнул знания. Спасибо

  • @evand.349
    @evand.349 3 роки тому +1

    Почему счётчик растёт на 1? На втором и последующих шагах(вызовах t1) для одной и той же области видимости мы каждый раз снова проходим через a=0;

  • @oleksiikhatsaiuk3650
    @oleksiikhatsaiuk3650 5 років тому +2

    Огромное спасибо!

  • @alanpuch2243
    @alanpuch2243 Рік тому

    Благодарю, понял.

  • @maksymovych_maksym
    @maksymovych_maksym 5 років тому +1

    Спасибо. Очень просто и понятно!

  • @glebkabayjanov5646
    @glebkabayjanov5646 4 роки тому +1

    Лайк очень полезно и понятно

  • @siablo009
    @siablo009 4 роки тому +1

    Не знал, что так можно) Круто)

  • @AZart-infa
    @AZart-infa 5 років тому +2

    Давненько на js кодю, но мало понимал что это. Щас стало ясно.

  • @valerian6943
    @valerian6943 3 роки тому

    Хорошее объяснение

  • @yaroslavzef7267
    @yaroslavzef7267 4 роки тому +1

    Подскажите пожалуйста. Вот уже в конце, когда полностью создали функцию, почему нельзя вызвать ее сразу? t1() а надо присвоить её переменной b?

  • @tatianakotenko5867
    @tatianakotenko5867 4 роки тому +1

    классно объяснено! спасибо!

  • @Assikokda
    @Assikokda 4 роки тому +1

    Спасибо вроде стало понятно

  • @Johan2tt
    @Johan2tt 3 роки тому

    Очень понятно спасибо

  • @orange-vlcybpd2
    @orange-vlcybpd2 2 роки тому

    Еще и тестировать функцию, опирающуюся на глобальную переменную, мягко скажем, затруднительно.

  • @sergei_militer
    @sergei_militer 5 років тому +1

    Раньше, когда не было в js классов, именно так ООП и реализовали. Просто для новичков нужно пояснить, что любая функция js - это объект js.

  • @АлександрМусатов-м5д

    Стало еще чуточку понятнее! 😆

  • @maxzm1279
    @maxzm1279 2 роки тому

    спасибо, наконец то понял!

  • @MrBeastFan_Gyak
    @MrBeastFan_Gyak 4 роки тому +4

    видео настолько хорошее, что я просто хочу его скачать)) так что если что-то случится, у меня есть видео
    )

  • @3dexploration317
    @3dexploration317 3 роки тому

    Здравствуйте! Спасибо за прекрасные уроки, вы супер. Я недавно начал знакомиться с JS и вот пытаюсь комментировать данный урок, так как в комментах есть вопрос: "Почему нельзя вызвать сразу функцию, а только через переменную?". И в этом есть хитрость данного счётчика. Счётчик работает не из-за функции замыкания, а из-за способа его вызова, она как бы повторяет работу обычной функции с глобальной переменной. Это легко проверить если анонимной функции дать имя и вызвать его двумя способами. В первом случае его просто вернуть без скобок в родительской функции, а во втором случае его вернуть со скобками, по сути вызывать его внутри родителя. В первом случае обработчик вынужден создать область видимости для функции так как у него находится функция с именем, которая возвращена, но не вызвана - то есть вызывается через переменную, а значит будет работать счётчик и локальная переменная, которая в данном случае имеет преимущество, будет перезаписана вновь и вновь, как это происходит в вашем случае с анонимной функцией или с функцией, которая обращается к глобальной переменной. Во втором случае обработчик получает функцию замыкания с именем, которая возвращена со скобками, то есть вызвана, и которая сразу перезаписывает локальную переменную и всё закончено, и никаких преимуществ для локальной переменной при создании счётчика, а только для функции. Если я, как и многие другие, нахожусь в заблуждении - то прошу вас прокомментировать или создать видеоурок по данному вопросу.

  • @valentinknoll4106
    @valentinknoll4106 4 роки тому +1

    Спасибо

  • @eurorock5912
    @eurorock5912 5 років тому +1

    Да, я тоже наткнулся на такое же самое простое объяснение замыканий.

  • @rtotwmoclew
    @rtotwmoclew 3 роки тому

    спасибо большое!!!

  • @tibul81
    @tibul81 4 роки тому +3

    Подскажите, почему надо присваивать переменной b функцию t1? Почему нельзя работать с функцией t1 напрямую? какой-то в этом смысл?

    • @Fovaxus
      @Fovaxus 4 роки тому +1

      Смысл в том, что так можно создавать сколько угодно независимых экземпляров этой функции со своими собственными областями видимости, в видео это были переменные b и c

    • @bulsond
      @bulsond 4 роки тому

      @@Fovaxus Угу, этакая инкапсуляция для нищих.

    • @Vyacheslav1294
      @Vyacheslav1294 4 роки тому

      Там переменной b присваивается не функция t1, а результат вызова этой функции.
      Сам тоже не с первого раза понял.
      Чем-то похоже на конструктор в ООП подходе.

  • @MrVIPKent
    @MrVIPKent 2 роки тому

    Зрозуміло все з першого разу

  • @ОлексійУкраїна-й7г
    @ОлексійУкраїна-й7г 4 роки тому +1

    огромное. вчера только с debounce столкнулся , и подвис из-за замыкания

  • @bulsond
    @bulsond 4 роки тому +12

    Есть такая поговорка: "Голь на выдумки хитра". Это как раз про замыкания - этакая инкапсуляция для нищих. Когда в нормальных ООП языках достаточно было объявить класс с приватным полем и методом, в javascript нашли вот такое решение как объединить данные (состояние) с функцией. Сейчас в js завезли наконец классы, теперь про замыкания можно забыть.

    • @mustbefail
      @mustbefail 4 роки тому +1

      Кроме ООП, есть и другие подходы в программировании.

  • @nso655
    @nso655 5 років тому +1

    Спасибо большое!

  • @Shved_2.0
    @Shved_2.0 4 роки тому +2

    выглядит как class T1( внутри есть переменная и метод работы с переменной)
    let b = new T1();
    let c = new T1();

  • @СергейИвашкин-е4у
    @СергейИвашкин-е4у 4 роки тому +1

    Супер 🖒

  • @7241984ify
    @7241984ify 4 роки тому +1

    Спасибо!

  • @lekbit9865
    @lekbit9865 4 роки тому +2

    И я всё равно не понимаю почему при вызове функции "b()" значение переменной "а" каждый раз не перезаписывается на "0". Ведь строка "let a = 0" стоит перед "return function". Или это происходит по причине того, что переменную "а" не можно создать снова, т.к. она уже хранится в памяти переменной "b" ???

    • @ВячеславТихонов-о3х
      @ВячеславТихонов-о3х 3 роки тому +1

      В переменные b и c помещается не функция t1, а РЕЗУЛЬТАТ ВЫЗОВА функции t1, об этом говорят круглые скобки после t1 (let b = t1() ). Что является результатом вызова t1? Возврат (return) безымянной функции function () { a = a + 1; return a}, о чём хорошо говорит вывод console.log(b) и там НЕТ никакого объявления переменной let a = 0. Т.е. в переменных b и c содержатся экземпляры функций и её (замкнутого) окружения, конкретно переменная a, необходимая для её работы, со значением 0. Функция всего лишь "запомнила" это значение. И каждый вызов функций b и c приводит к увеличению запомненного значения на 1, причём каждая из них помнит своё значение. У функции t1 вспомогательная роль, она просто ограничивает область видимости безымянной функции внутри неё, причём из вне.
      Я так понял это видео, может где ошибся с формулировками.

  • @HappyLifege
    @HappyLifege 5 років тому +1

    Хорошее видео, спасибо!

  • @Максимда-л8ы
    @Максимда-л8ы 2 роки тому

    Если честно, меня удивляют комментарии к данному видео и конкретно данное видео. Нахожусь в средине курса в данньій момент, но решил глянуть что ждет в конце js 2.0. Я думал данньій подход с локальньіми областями видимости логично понятен всем🧐

  • @рудируди-т5н
    @рудируди-т5н Рік тому

    Поясните кто шарит?
    Потому что по мне все происходящее не логично. Изначально же было сказано, что переменная живет, пока функция работает или что то в этом роде.
    По мне должно быть так, что при каждом вызове функции t1 в данном примере - переменная a объявляется заново и далее 1 раз увеличивается на 1. Почему сохраняется ее значение если функция отработала.
    Т.е. как я вижу это:
    Вызов функции t1
    В ней объявляется a=0.
    Возвращается другая функция, которая увеличивает a++.
    Функция t1 своё отработала.
    При следующем вызове разве не должно все повторится с начала, заново объявится a=0.

    • @рудируди-т5н
      @рудируди-т5н Рік тому

      А все, почитал комменты - понял,
      Переменным b и c присваивается то, что возвращает функция t1, т.е. функция, увеличивающая счётчик в функции t1.

  • @borisn879
    @borisn879 3 роки тому

    Имхо, замыкание - чрезвычайно интуитивное понятие. Даже новичок, как только что изучил function, решает написать функцию. И пусть она вернет функцию. А область видимости лежит в интуитивной плоскости, изначально "чувствуешь", что контекст не потеряется. Зато академически замыкание можно описать так, что мало кто поймет, лишь только не все.

  • @НиколайКуделин-ц1щ

    а почему бы для изоляции переменной счётчика просто не добавить фигурные скобки?:
    {
    let tick = 0;
    function counter() {
    console.log(tick++);
    }
    }
    tick = 5; // не сработает

  • @gorkhachatryan3719
    @gorkhachatryan3719 3 роки тому

    klass

  • @ядриломудрило
    @ядриломудрило 3 роки тому

    А как утилизируется не нужная память?