Что такое ЗАМЫКАНИЯ в JavaScript? Как они работают? Разберём на примерах

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

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

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

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

  • @mary5betheone663
    @mary5betheone663 7 หลายเดือนก่อน

    Непростая тема, но очень понравилось объяснение в видео! Всё четко и понятно! Спасибо!

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

    хороший урок, спасибо автору!

  • @EkaterinaYulina
    @EkaterinaYulina 2 ปีที่แล้ว +3

    Автор очень доходчиво рассказывает! Рекомендую

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

    Спасибо, поняла с первого раза 👌

  • @мышелов-т8й
    @мышелов-т8й ปีที่แล้ว +2

    Объективно адекватно

  • @flightcommunity.kingsofthe6606
    @flightcommunity.kingsofthe6606 ปีที่แล้ว +1

    Отличный урок! Давно слышал про замыкания, но никак не мог понять, после видео стало ясно) Подскажите где можно попрактиковаться на замыкания?

  • @РоманЯгжин-щ4к
    @РоманЯгжин-щ4к ปีที่แล้ว

    То есть основная фишка замыкания в том, что оно сохраняет значение предыдущих вызовов функции? Иными словами переменные лексического окружения (scope) сохраняются и соответственно эти сохранённые значения в переменных используются при следующих вызовах функции ?

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

      Да, всё верно. Основное применение замыкания это сохранение доступа к переменным из внешней функции, даже после того, как она завершила свою работу.
      Это позволяет функции использовать и изменять значения этих переменных, что делает их очень гибкими.
      В рабочих примерах замыкания могут быть полезными, когда нужно сохранить состояние или создать приватные переменные в JavaScript.

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

    Отличный пример👌

  • @Zikyzi
    @Zikyzi 2 ปีที่แล้ว +1

    Спасибо!

  • @ЕвгенияФедорова-ч1р
    @ЕвгенияФедорова-ч1р 2 ปีที่แล้ว +1

    Огонь!

  • @darinka6024
    @darinka6024 2 ปีที่แล้ว +1

    Юра 🔥🔥🔥

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

    Юрий спасибо за попытку объяснить тему замыкания в js . На мой взгляд не очень удачная. 2-е в вашем видео примерно с 20-21минуты вы рассказываете тему(в другом видео, другой блогер назвал её function factory) и там он сказал,что передовать два аргумента в фунцию почему-то не очень хорошо. Для краткости закончилось все прередачей двух аргументов в отдельных круглых скобках (как у вас) . Не могли бы вы рассказать тему function factory и ещё тему геттеров и сеттеров и нормально объяснить для чего они нужны.

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

      Вы ссылаетесь к тому, что понятие function factory чем-то похоже на каррирование. В каррировании мы стараемся уйти от нескольких аргументов в пользу одного, а в function factory мы больше концентрируемся на расширении функционала или конфигураций готовой функции. В видео есть пример с функцией someFunction5()() , его можно отнести к обоим этим понятиям. Тем не менее, обе эти концепции работают на замыкании, и придуманы для демонстрации и объяснений начинающим в JavaScript.

  • @СергейТрухачев-о7л
    @СергейТрухачев-о7л 2 ปีที่แล้ว +1

    ТОП!!

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

    Юра, Вы 35 минут силились объяснить, что такое замыкание, но похоже Вы и сами не до конца разобрались в этой теме.
    Замыкание это всего лишь вот это:
    {
    var1;
    get_var1{
    return var1;
    }
    set_var1{
    var1 = 5;
    }
    }
    Внешние фигурные скобки, внутри которых объявлены две подпрограммы, являются обозначением контекста,
    внутри которого есть данные и эти две подпрограммы. В роли контекста может быть внешняя подпрограмма или
    какой-то блок операторов.
    Замыкание - это когда доступ к переменной var1 извне блока кода, в котором она объявлена, отсутствует,
    т.е. нельзя воспользоваться так:
    имя-блока-кода.var1 = 4;
    Но подпрограммы, которые внутри этого блока были объявлены, имеют к ней доступ в силу того, что при
    замыкании подпрограммы имеют доступ к среде, в которой они были объявлены. Т.е. можно написать:
    set_var1();
    w = gen_var1();
    То, что эти две функции имеют доступ к переменной var1 - это и есть замыкание, т.е. доступ функции к переменной той среды, в котором эта функция была определена.
    При этом, если потом написать так
    set_var1();
    var1 = 10;
    w = gen_var1();
    то w все равно будет содержать 5, потому что функции работают с var1 из среды, в которой они были определены, а не с той переменной var1, которую мы ввели потом.

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

      вы действительно хорошо пояснили понятие замыкания, с учётом примера с псевдокодом. Ваш пример строится на геттере и сеттере, что вполне имеет место быть и может применяться. Тем не менее замыкание не заканчивается только на get-set, есть много разных способов демонстраций. Основная задача видео показать пример постепенного уложения функции с учётом замыкания для тех кто впервые сталкивается с этим инструментом. Спасибо за ваш комментарий!

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

      👍@@ElbrusBootcamp

  • @АлексейЧерняев-б2н
    @АлексейЧерняев-б2н 2 ปีที่แล้ว

    ❤❤❤

  • @Russia-e2o
    @Russia-e2o 2 ปีที่แล้ว

    Это же видео для уже работающих програмистов знающий это язык. Я пробовал изучать пайтон, со второго просмотра чуть-чуть понял. Человек с 0 знаниями не понимает даже что это за программа. Это урок не для новичков!

    • @ElbrusBootcamp
      @ElbrusBootcamp  2 ปีที่แล้ว +1

      Здравствуйте! Тема замыканий важна для понимания, когда базовые темы уже разобраны. Также эта тема часто встречается на собеседованиях, и нашей задачей было помочь с подробным разбором. Расскажите, какие темы вам было бы интересно увидеть в будущем на нашем канале? Вы уже начали знакомство с синтаксисом JS?