Что такое ЗАМЫКАНИЯ в JavaScript? Как они работают? Разберём на примерах
HTML-код
- Опубликовано: 19 дек 2022
- Хотите поближе познакомиться с форматом буткемпа? Тогда записывайтесь на день открытых дверей по ссылке 👉🏻 go.elbrusboot.camp/opendays-js
Участвуйте в бесплатном мастер-классе по JavaScript 👉🏻 go.elbrusboot.camp/mk-js-adva...
Кто мы такие❓
Elbrus Coding Bootcamp - это первая и самая крупная в России школа программирования в формате интенсивного обучения. Студенты 12 недель оффлайн или 15 недель онлайн практикуются на реальных проектах и кодят с утра до вечера. Обучение проходит по направлениям JavaScript и Data Science.
В буткемпе студенты решают задачи от реальных работодателей, что особенно важно в постоянно развивающейся сфере IT. 3 месяца оффлайн / 4 месяца онлайн обучения с 9:00 до 19:00 5 дней в неделю, ежедневная работа с кодом, плюс два проекта, командный и персональный, которые студенты защищают на второй и третьей, заключительной, фазе обучения - и вот на выходе уже есть полноценное портфолио, которое можно показать при устройстве на работу.
По окончании обучения всех ждет карьерная неделя, где карьерный коуч помогает подготовиться к собеседованию, подтянуть софт-скиллы и собрать резюме, с которыми 93% студентов находят работу в течение трех месяцев после окончания буткемпа. Также после завершения Elbrus Bootcamp есть возможность получить диплом ДПО.
Приходите на день открытых дверей в онлайне и познакомьтесь с форматом буткемп. Это лучший способ научиться программировать, сменить работу и увеличить свой доход.
VK - elbrusbootcamp
FB - / elbrusbootcamp
Insta - / elbrus.bootcamp
TikTok - www.tiktok.com/@elbrusbootcam...
Сайт школы - elbrusboot.camp
Напишите или позвоните нам, чтобы узнать, как поступить в ближайшую группу:
☎️ +7 (499) 938-68-24
💬 Чат в WhatsApp api.whatsapp.com/send?phone=7...
💬 Чат в Телеграм t.me/elbrusbootcamp1
✉️ info@elbrusboot.camp
Использовалось в видео (музыка/видео):
Gemini - half.cool
Автор очень доходчиво рассказывает! Рекомендую
Юр спасибо огромное! Два дня смотрел/читал всякое и не мог допереть что такое замыкание и где оно применяется, теперь картинка сложилась
Спасибо, поняла с первого раза 👌
Объективно адекватно
Отличный пример👌
Спасибо!
Огонь!
ТОП!!
Юра 🔥🔥🔥
Отличный урок! Давно слышал про замыкания, но никак не мог понять, после видео стало ясно) Подскажите где можно попрактиковаться на замыкания?
❤❤❤
Юрий спасибо за попытку объяснить тему замыкания в js . На мой взгляд не очень удачная. 2-е в вашем видео примерно с 20-21минуты вы рассказываете тему(в другом видео, другой блогер назвал её function factory) и там он сказал,что передовать два аргумента в фунцию почему-то не очень хорошо. Для краткости закончилось все прередачей двух аргументов в отдельных круглых скобках (как у вас) . Не могли бы вы рассказать тему function factory и ещё тему геттеров и сеттеров и нормально объяснить для чего они нужны.
Вы ссылаетесь к тому, что понятие function factory чем-то похоже на каррирование. В каррировании мы стараемся уйти от нескольких аргументов в пользу одного, а в function factory мы больше концентрируемся на расширении функционала или конфигураций готовой функции. В видео есть пример с функцией someFunction5()() , его можно отнести к обоим этим понятиям. Тем не менее, обе эти концепции работают на замыкании, и придуманы для демонстрации и объяснений начинающим в JavaScript.
То есть основная фишка замыкания в том, что оно сохраняет значение предыдущих вызовов функции? Иными словами переменные лексического окружения (scope) сохраняются и соответственно эти сохранённые значения в переменных используются при следующих вызовах функции ?
Да, всё верно. Основное применение замыкания это сохранение доступа к переменным из внешней функции, даже после того, как она завершила свою работу.
Это позволяет функции использовать и изменять значения этих переменных, что делает их очень гибкими.
В рабочих примерах замыкания могут быть полезными, когда нужно сохранить состояние или создать приватные переменные в JavaScript.
Юра, Вы 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, которую мы ввели потом.
вы действительно хорошо пояснили понятие замыкания, с учётом примера с псевдокодом. Ваш пример строится на геттере и сеттере, что вполне имеет место быть и может применяться. Тем не менее замыкание не заканчивается только на get-set, есть много разных способов демонстраций. Основная задача видео показать пример постепенного уложения функции с учётом замыкания для тех кто впервые сталкивается с этим инструментом. Спасибо за ваш комментарий!
👍@@ElbrusBootcamp
Это же видео для уже работающих програмистов знающий это язык. Я пробовал изучать пайтон, со второго просмотра чуть-чуть понял. Человек с 0 знаниями не понимает даже что это за программа. Это урок не для новичков!
Здравствуйте! Тема замыканий важна для понимания, когда базовые темы уже разобраны. Также эта тема часто встречается на собеседованиях, и нашей задачей было помочь с подробным разбором. Расскажите, какие темы вам было бы интересно увидеть в будущем на нашем канале? Вы уже начали знакомство с синтаксисом JS?