Что такое и как работают замыкания (closures) в JavaScript?

  Рет қаралды 12,954

PurpleSchool | Anton Larichev

PurpleSchool | Anton Larichev

Күн бұрын

Пікірлер: 95
@PurpleSchool
@PurpleSchool 2 жыл бұрын
🎉 Новый курс - Основы JavaScript: purpleschool.ru/course/javascript-basics
@homelander973
@homelander973 Ай бұрын
прекрасное объяснение как всегда Антон
@PurpleSchool
@PurpleSchool Ай бұрын
@@homelander973 спасибо!
@UserName32048
@UserName32048 Жыл бұрын
Вот теперь стало понятно, спасибо!
@PurpleSchool
@PurpleSchool Жыл бұрын
Пожалуйста!
@mamaimdeveloper
@mamaimdeveloper Жыл бұрын
Как же доходчиво!
@PurpleSchool
@PurpleSchool Жыл бұрын
Спасибо
@Александр-ш8я6н
@Александр-ш8я6н 9 ай бұрын
А что здесь доходчивого? Почему в change мы можем передать аргумент хотя changeBalance, которая присваивается change не принимает аргументов, какой то трэш, здесь происходит искажение локальных областей видимости функции, нужно уточнить что в change лежит то , что возвращает функция changeBalance а не сама функция changeBalance
@DronVol
@DronVol 2 жыл бұрын
Я бы с удовольствием про контексты послушал, а так же про их привязку)
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Это всё есть в курсе, может сделаю отдельное видео как-нибудь
@ndrewhas
@ndrewhas Жыл бұрын
Годно, спасибо 🔥
@PurpleSchool
@PurpleSchool Жыл бұрын
Пожалуйста!
@МаксимИсаев-ъ5о
@МаксимИсаев-ъ5о 2 жыл бұрын
Моё почтение!
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Спасибо)
@Quentinrei
@Quentinrei 2 жыл бұрын
Крутой контент 🎉
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Спасибо!)
@bushkov
@bushkov 2 жыл бұрын
О, прикольно! Как раз думал когда выйдет курс по js и вот! Уже купил.
@PurpleSchool
@PurpleSchool 2 жыл бұрын
👍
@bushkov
@bushkov 2 жыл бұрын
@@PurpleSchool Антон, подскажите, когда будет готова вторая часть курса? Я уже прошел 10% базового курса и поэтому полагаю, что смогу завершить все за 2-3 недели. Поэтому хотелось бы сразу перейти ко второй части. Или уже на этом уровне можно сразу к Typescript? Спасибо.
@johnsnow6041
@johnsnow6041 2 жыл бұрын
Несколько раз пересмотрел
@rusfungame
@rusfungame Жыл бұрын
2 года учу js, такого обьяснения еще не встречал
@PurpleSchool
@PurpleSchool Жыл бұрын
Надеюсь полезного?)
@rusfungame
@rusfungame Жыл бұрын
@@PurpleSchool Конечно!
@yyanasolyah
@yyanasolyah 2 жыл бұрын
Спасибо за видео! Хотелось бы в будущем увидеть видео про микро и макротаски;)
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Хорошо)
@diggerdog001
@diggerdog001 Жыл бұрын
Антон, я вот выбрал твой курс (я в js ноль в данный момент) как первый курс по JS и уже на первых уроках ты произносишь слова, которые новичок не может знать. Например, в разделе что такое JS, ты разбираешь где еще кроме браузера используется JS, там есть такие слова как нативные компоненты, какие то потоки (??), API, React Native, парсинг, компилирование, как будто пытаешь доказать что ты профессионал, хотя мы и так это знаем (извини если грубо написал). Для тебя понятно что эти вещи и пояснения элементарны, только не думаю что это == по отношению к новичкам. Я только начал, а уже голова начинает закипать о доп. информации которую ты не объясняешь, хотя написано что курс подходит для новичков :( Может дашь какой то совет? Может перед твоим курсом что-то другое пройти? Всё таки JS это основа основ после html/css
@PurpleSchool
@PurpleSchool Жыл бұрын
Основа основ. Я просто даю дополнительный контекст, который пока не влияет на простые концепции, которые мы разбираем. Двигайся просто медленно по урокам
@diggerdog001
@diggerdog001 Жыл бұрын
@@PurpleSchoolпонял спасибо, грубо не хотел написать. Просто хотел высказать тебе обратную связь
@Noname-i4f3z
@Noname-i4f3z Жыл бұрын
Очень полезно) есть ли у Вас видео об утечках памяти?
@PurpleSchool
@PurpleSchool Жыл бұрын
Есть анализ утечки памяти в курсе по Node.js и разбор всех инструментов: purpleschool.ru/course/nodejs
@raff_m_d6971
@raff_m_d6971 2 жыл бұрын
Ждемс ещё
@PurpleSchool
@PurpleSchool 2 жыл бұрын
👍
@Zadorozhniy39
@Zadorozhniy39 2 жыл бұрын
Спасибо 👍🏼
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Пожалуйста)
@CCSIB
@CCSIB 2 жыл бұрын
Круто, не знал. Хорошо бы практические примеры, пока придумал что можно считать сумму, среднее и кол-во, например заказов и хранить в контексте. Нужно попробовать.
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Рад, что было полезно)
@asifabbasov3801
@asifabbasov3801 10 ай бұрын
Вопрос не по теме. Что за тему вы используете в VS Code?
@PurpleSchool
@PurpleSchool 10 ай бұрын
Bearded Theme Vivid Purple
@АнтонСурыгин-ф9ж
@АнтонСурыгин-ф9ж Жыл бұрын
Если бы можно было прикладывать аудио, то я бы приложил скрип своего мозга 😁 Но вроде какое то понимание появились 😀
@PurpleSchool
@PurpleSchool Жыл бұрын
👍
@aidarb9318
@aidarb9318 2 жыл бұрын
thanks man
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Welcome)
@МаксимБурый-с7ч
@МаксимБурый-с7ч 2 жыл бұрын
Ни где нет информации. В каждом браузере есть свои кнопки переход на предыдущую страницу и обратно. Но есть такая штука как куки, при возврате куки не восстанавливаются, из-за чего ломается страница. Что делать? Сохранять историю переходов с куками?
@vit944
@vit944 Жыл бұрын
Антон, подскажите, а где на практике во фронтенде применяются замыкания?
@PurpleSchool
@PurpleSchool Жыл бұрын
Осознанно практически нигде, так как данными из замыкания напрямую нельзя управлять.
@тимур_атмосферный
@тимур_атмосферный Жыл бұрын
@@PurpleSchool Супер
@sjdjjsjsjs3991
@sjdjjsjsjs3991 4 ай бұрын
@@PurpleSchool я во фронт пошел, чтобы кнопки красить, какие еще замыкания? 😂
@АлексейБатищев-щ3ч
@АлексейБатищев-щ3ч Жыл бұрын
Правильно ли я понял, что после каждого вызова запоминается пред результат и прибавляется к итоговой сумме?
@PurpleSchool
@PurpleSchool Жыл бұрын
Оно всегда храниться в связанном scope и к нему обращается
@N5O1
@N5O1 2 жыл бұрын
8:43 замыкания - инкапсуляция из мира JS
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Да, но у нас есть в JS и более явные механизмы: приватные переменные, IIFE
@АндрейСорокин-ь6ъ
@АндрейСорокин-ь6ъ 2 жыл бұрын
@@PurpleSchool IIFE всегда воспринимал как костыль, сочиненный ввиду отсутствия альтернативы. Интересно ваше мнение
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Он действительно костыль, сейчас практически не используется (кроме разовый запусков инициализации приложения, но не как инкапсуляция).
@fedordostoevskiy4209
@fedordostoevskiy4209 Жыл бұрын
Классно. Но друзья прочитайте Симпсона про замыкания. Я с третьего раза сам полностью въехал только. Там не прям уж 'wow', но ни один ролик или статья столько не дал мне.
@valeriyosokin1076
@valeriyosokin1076 Жыл бұрын
У замыканий есть накладные расходы при создании и запуске. По сути, при создании замыкания создается объект. Не забываем что в JS функция это объект. В примере создано 2 экземпляра объекта функции. А если будет необходимо создать сотни? И как всем этим управлять?
@igorchesnokov482
@igorchesnokov482 Жыл бұрын
Ну и случится замыкание :) Только в голове :))))
@sergio_an_2003
@sergio_an_2003 2 жыл бұрын
Круто! Оч информативно. А какая тема стоит в vs code?
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Bearded Theme Vivid Purple
@pintofale
@pintofale 2 жыл бұрын
Спасибо за видео! Подскажите пожалуйста - в Вашем курсе ведь нет ничего про асинхронные операции? Это будет в каком-нибудь "продвинутом" курсе?
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Да, будет во второй части, которая продолжает первый курс.
@CCSIB
@CCSIB 2 жыл бұрын
И надо попробовать внутри объекта vue с методами vue будет ли работать, скорее всего да.
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Vue же это просто JS фреймворк, потому везде где есть JS работаю будет)
@OleksiiMalichenko
@OleksiiMalichenko 2 жыл бұрын
А где все коменты?
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Вроде все есть
@РоманЯгжин-щ4к
@РоманЯгжин-щ4к Жыл бұрын
change это по сути changeBalance. У changeBalance нет аргументов. Каким образом аргумент переданный в change(100) передаётся в функцию и затем судя по всему передаётся в анонимную функцию вместо sum? У меня вот после просмотра видео сложилось впечатление, что замыкание - это когда одна функция возвращает другую функцию и возвращаемая функция замыкает родительскую и поэтому типа замыкание))) Механизм передачи параметров вообще не понятен.
@КеримКорголоев-б3е
@КеримКорголоев-б3е 9 ай бұрын
Ты выполняешь функцию в ченж, тем самым возвращаешь анонимную функцию с параметром и переменную баланс
@novichok3417
@novichok3417 9 ай бұрын
​@@КеримКорголоев-б3еа что будет если присвоить перем ченж функ ченжбаланс без вызова (без скобок) . А потом запустить ченж с разными параметрами три раза?
@КеримКорголоев-б3е
@КеримКорголоев-б3е 9 ай бұрын
@@novichok3417 Для тебя ничего не произойдёт. А так переменная ченж будет указывать на функцию ченжбаланс. Но ты можешь выполнить функцию ченж с двумя скобками: ченж()(100). Тогда ты по сути повторишь тот же код, что и в примере на видео. Попробуй вариант из видео и свой вариант, но выведи в консоль ченж, чтобы узнать, что в ней содержится
@novichok3417
@novichok3417 9 ай бұрын
@@КеримКорголоев-б3еи где тогда как сказать эффект накапливания? ченжбаланс()(100); ченжбаланс()(2000); ченжбаланс()(3500)); Дадут результат: 100, 2000, 3500. А не 100, 2100, 5600.
@mooncorizer290
@mooncorizer290 10 ай бұрын
Зачем называть замыканием, когда обьект с приватной переменной и методом что её меняет, помещают в переменную и пользуются его методами меняя приватное значение. Почему именно замыкание. Где можно почитать официально об этом а не в википедии
@PurpleSchool
@PurpleSchool 10 ай бұрын
developer.mozilla.org/ru/docs/Web/JavaScript/Closures
@koshmar1319
@koshmar1319 2 жыл бұрын
а рекурсия будет на курсе?
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Да, в этом курсе она используется в тестах и рассматривается как пример переполнения стека.
@godlikex_alex
@godlikex_alex 2 жыл бұрын
название темы не подскажите?)
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Bearded Theme Vivid Purple
@user-glory-of-ukraine
@user-glory-of-ukraine Жыл бұрын
Автор Ангулярщик?)
@PurpleSchool
@PurpleSchool Жыл бұрын
Ну я писал пару лет на AngularJS, потом на Angular, потом React и Svelte. Vue больше для интереса, а не для прода.
@serdotsenko
@serdotsenko 2 жыл бұрын
я так предпологаю, что замыкания придумали до классов, т.к. по сути это класс с приватным полем, которое меняет метод этого класса 😉
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Да, они были до классов)
@limonred5283
@limonred5283 Жыл бұрын
почему это выглядит как дичь?)))
@PurpleSchool
@PurpleSchool Жыл бұрын
Это JS)
@denisshulga7539
@denisshulga7539 Жыл бұрын
Ничо не понятно)
@romanmed9035
@romanmed9035 2 жыл бұрын
несомненно полезное видео. но никак не прояснило ситуацию. образно понятно, а конкретно все же еще нет. вероятно не нашел еще то объяснение котрое прольет свет на ситуацию. хотя это уже не первое видео на эту тему которое смотрю.
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Эх, я так старался. По сути замыкание - это функция и окружение где она была создана и связь между этим.
@CJIu3eHb
@CJIu3eHb 2 жыл бұрын
Как дополнение, хочу акцентировать внимание именно на сборщике мусора. После выполнения порождающей функции в замыкании возвращаемой функции (ее внешнем скоупе) остается только то, что используется в возвращаемой функции, т.к. эти переменные еще понадобятся для выполнения возвращаемой функции. А то, что было только внутри порождающей и нигде больше не понадобится - после выполнения порождающей доступно для чистки сборщиком мусора. Ну и не забывать, что каждое выполнение порождающей создает новый скоуп для возвращаемой. Именно это позволяет иметь независимые балансы при создании нескольких функций changeXXX в примере видео.
@romanmed9035
@romanmed9035 2 жыл бұрын
@@PurpleSchool у Вас отличное видео. и оно действительно кое что прояснило, но не до озарения. Вы не зря старались. я никоим образом ничего плохого о самом выпуске не написал. это не видео виновато, как писал не оно первое которое смотрел. и несомненно оно многим поможет у кого проще с пониманием. Ваш труд не напрасен и старания не бесполезны.
@romanmed9035
@romanmed9035 2 жыл бұрын
@@CJIu3eHb премного благодарен за дополнение
@N5O1
@N5O1 2 жыл бұрын
Это самая бесполезная информация, которую нужно знать JS\TS разработчкину. Замыкания - это инициализированные внутри функции\облати видимости переменные
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Проблема, что многие не понимают работу замыканий и допускают ошибки при работе.
@progtime2000
@progtime2000 2 жыл бұрын
Уснуть можно...
@PurpleSchool
@PurpleSchool 2 жыл бұрын
😴
@victormog
@victormog 2 жыл бұрын
Слишком затянул, IMHO (тут на много проще: kzbin.info/www/bejne/iIHYd61vaKypps0 )
@PurpleSchool
@PurpleSchool 2 жыл бұрын
Тут не рассказана механика с точки зрения scope и привязки. Потому люди и не понимают почему так происходит
@АндрейСорокин-ь6ъ
@АндрейСорокин-ь6ъ 2 жыл бұрын
интересная логика, тебе можно пойти тогда к хауди хо, он тебе весь js за час расскажет) без обид)
@victormog
@victormog 2 жыл бұрын
@@АндрейСорокин-ь6ъ логика элементарная - если видео обучающее, то где понятнее? Лично я, если бы уже не знал, не понял бы ничего...
Замыкания в JavaScript с примерами. Фундаментальный JavaScript
22:39
JavaScript Visualized - Event Loop, Web APIs, (Micro)task Queue
12:35
I thought one thing and the truth is something else 😂
00:34
عائلة ابو رعد Abo Raad family
Рет қаралды 9 МЛН
Как Я Брата ОБМАНУЛ (смешное видео, прикол, юмор, поржать)
00:59
Из какого города смотришь? 😃
00:34
МЯТНАЯ ФАНТА
Рет қаралды 2,6 МЛН
快乐总是短暂的!😂 #搞笑夫妻 #爱美食爱生活 #搞笑达人
00:14
朱大帅and依美姐
Рет қаралды 13 МЛН
Что такое ЗАМЫКАНИЯ в JavaScript? Как они работают? Разберём на примерах
35:49
Эльбрус Буткемп: школа программирования
Рет қаралды 4 М.
Замыкания в JavaScript
18:50
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 53 М.
Собеседование на Junior Frontend разработчика на React
34:15
PurpleSchool | Anton Larichev
Рет қаралды 67 М.
Что такое промисы в JavaScript. Фундаментальный JavaScript
24:51
Михаил Непомнящий
Рет қаралды 46 М.
Лексическое окружение. JavaScript
8:25
Замыкания, просто и с примерами. Функции JavaScript
39:25
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 45 М.
I thought one thing and the truth is something else 😂
00:34
عائلة ابو رعد Abo Raad family
Рет қаралды 9 МЛН