Замыкания в JavaScript с примерами. Фундаментальный JavaScript

  Рет қаралды 19,653

Михаил Непомнящий

Михаил Непомнящий

Күн бұрын

Пікірлер: 61
@tanyatritelnitskaya1911
@tanyatritelnitskaya1911 3 жыл бұрын
Отличное видео, которое показывает, как все работает изнутри, а это и есть самое важное! Спасибо большое!!!
@alexey_samokhin
@alexey_samokhin 2 жыл бұрын
Способ, с помощью которого я навсегда запомнил замыкания - это сравнение их с рюкзаком. Когда функция создана и передаётся куда-либо, или возвращается из другой функции, то она носит с собой рюкзак. А в этом рюкзаке хранятся все переменные, которые были в области видимости во время создания этой функции.
@JackSteamBoy
@JackSteamBoy Жыл бұрын
это называется [[scope]]
@Ivan-ee4pz
@Ivan-ee4pz Жыл бұрын
Это самое лучшее объяснение замыкания в моей жизни, спасибо тебе огромное
@etemax
@etemax Жыл бұрын
так можно ответить на собеседовании?))))
@OneMrZlodey
@OneMrZlodey Жыл бұрын
Нужно :) @@etemax
@pfk9025
@pfk9025 3 жыл бұрын
Молодец, что в объяснении затронул Scopes. Спасибо!
@nolightnohope3302
@nolightnohope3302 2 ай бұрын
спасибо за урок. не знал, что можно передать функцию в качестве аргумента
@unknown.6914
@unknown.6914 8 ай бұрын
Лично у меня получилось понять замыкания, когда я продебажил все строчки кода и увидел как ведет себя js. Какая у него последовательность действий и что именно делают эти действия. Может кому-то это тоже поможет. Всем удачи! Михаилу спасибо за полезный контент.
@____Olga__
@____Olga__ 3 жыл бұрын
спасибо за [[Scope]]. Инсайт!
@ВикаОношко-л8ж
@ВикаОношко-л8ж 10 ай бұрын
спасибо за объяснения работы замыкания изнутри!было интересно,нужно еще пару раз посмотреть чтобы все уловить)
@RewCSharp
@RewCSharp 9 ай бұрын
Спасибо за урок!
@ekaterinaskrynnik6932
@ekaterinaskrynnik6932 Жыл бұрын
Спасибо большое за ваши старания ! С вашими уроками учёба становится легкой и супер интересной !
@alsusayfulina1865
@alsusayfulina1865 Жыл бұрын
Михаил, спасибо большое, очень интересное и понятное объяснение 👍
@surr3955
@surr3955 4 жыл бұрын
Круто, спасибо! Давно хотел понять что такое мемоизация - как раз созрел )
@A.Floatrx
@A.Floatrx 2 жыл бұрын
мемоизация не может возвращать один и тот же результат всегда... все должно зависеть от аргументов, которые вы передаете в ф-цию... из аргументов мы получаем что-то типа хэша или просто JSON.stringify(args) - и используем это значение как вычисляемый ключ, для хранения результатов... как-то так...
@yantakushevich1014
@yantakushevich1014 Жыл бұрын
отлично объясняешь, голос приятный. Молодец!
@АлександрСергеевич-и4ы
@АлександрСергеевич-и4ы Жыл бұрын
Просто лучший!
@АлександрСергеевич-и4ы
@АлександрСергеевич-и4ы Жыл бұрын
В последнем примере, получается что функция замыкает в себе состояние? сильно, прям будто локальный стейт компонента во фреймворке. Я правильно понимаю?
@stanislavasgoldyckis7740
@stanislavasgoldyckis7740 2 жыл бұрын
Спасибо
@yarvavilin
@yarvavilin 4 жыл бұрын
Приятный голос)
@nastenaozu
@nastenaozu 2 жыл бұрын
чел...))))))))))
@yarvavilin
@yarvavilin 2 жыл бұрын
@@nastenaozu ахаххаахха
@mityadima
@mityadima 2 жыл бұрын
Нашел замыкания, спасибо
@mr.listok
@mr.listok Жыл бұрын
спасибо)
@glaciron
@glaciron 2 жыл бұрын
Круто
@sergey_zatsepin
@sergey_zatsepin 3 жыл бұрын
Спасибо!
@A.Floatrx
@A.Floatrx 2 жыл бұрын
Чтобы лучше понимать как работают замыкания, стоит сначала разобраться как работает "сборщик мусора" в js... это напрямую связанные вещи
@СергейМельниченко-у8п
@СергейМельниченко-у8п Жыл бұрын
Я так и не пойму, контекст или же скоуп, это одно и тоже, что стэковый фрейм функции?(как в c# к примеру )
@v.demchenko
@v.demchenko Жыл бұрын
Было бы хорошо обсудить пример с каунтером. function useCounter() { let state = 0 function inc() { state++ } function dec() { state-- } return [state, dec, inc] } counter // 0 increment() counter // 0 Как сделать так, что бы возвращалось обновленное значение каунтера? P.s. функцию не предлагать.
@jefryredgenaldchen3936
@jefryredgenaldchen3936 Жыл бұрын
function useCounter() { let state = 0 return { inc: function () { state++ }, dec: function () { state-- }, value: function () { return state }, } } const result = useCounter() result.inc() //1 result.inc() //2 result.dec() //1 console.log(result.value()) //1 P.S. тебе наверное уже не актуально, но вдруг кому пригодится P.P.S сам новичок поэтому, если что не так, то сильно не пинайте
@v.demchenko
@v.demchenko Жыл бұрын
@@jefryredgenaldchen3936 в реакте ты не функцию получаешь. Так не годится)
@jefryredgenaldchen3936
@jefryredgenaldchen3936 Жыл бұрын
@@v.demchenko а ну так я до реакта еще даже не добрался)) говорю ж - новичок, так балуюсь))
@pogrebnoimaksim
@pogrebnoimaksim 2 жыл бұрын
иллюстрация еще больше путает смотрящего... кто не понимает что такое Замыкание может еще больше запутаться... это можно лучше и проще объяснить просто на словах. Есть ролики на эту тему более развернутые. Но за видео спасибо, у вас много полезных роликов...
@cyrilanisimov
@cyrilanisimov 11 ай бұрын
Очень многословное объяснение. Уводящее внимание слушателя от сути. Такое чувство, что жабастриптизёры сами не понимают, как работает язык
@ruslanhd7262
@ruslanhd7262 2 жыл бұрын
Честно говоря я не понял, остались вопросы. Пойду дальше искать видео, где разъясняют для совсем отсталых.
@digitalturkistan1857
@digitalturkistan1857 Жыл бұрын
Александр лущенко
@АлексейСоколов-э1к
@АлексейСоколов-э1к Жыл бұрын
В самом первом примере, консоль выводит ошибку: Uncaught TypeError: helloWorld is not a function Если написать такой код: function createFn() { function greeting() { console.log('hello world'); } return greeting(); } const helloWorld = createFn(); console.log(typeof helloWorld); helloWorld(); При этом console.log(typeof helloWorld); выдает: undefined В чём дело?
@mishanep
@mishanep Жыл бұрын
Внутри функции createFn вы создали новую функцию и сразу ее вызвали. В результате вы вернули из createFn вместо новой функции, результат ее вызова. В данном случае undefined
@АлексейСоколов-э1к
@АлексейСоколов-э1к Жыл бұрын
@@mishanep да, но это же один в один ваш код. Только у вас показывает, что это функция, а у меня undefined. Как такое возможно, код же одинаковый?
@mishanep
@mishanep Жыл бұрын
@@АлексейСоколов-э1к значит не одинаковый. Уберите круглые скобки после return greeting
@АлексейСоколов-э1к
@АлексейСоколов-э1к Жыл бұрын
@@mishanep точно! Виноват, простите! Спасибо Вам большое!
@СергейМельниченко-у8п
@СергейМельниченко-у8п Жыл бұрын
ты для начала разберись в разнице между "Вызвать функцию" и "Передать функцию", а потом уже такие темы учи
@romanmed9035
@romanmed9035 2 жыл бұрын
а при использовании стрелочных функций?
@mishanep
@mishanep 2 жыл бұрын
То же самое. Замыкание - не про стиль написания функций, а больше про скоуп создаваемых функций.
@romanmed9035
@romanmed9035 2 жыл бұрын
@@mishanep спасибо. да, я сам сделал на стрелочных. но рассказав и показав сейчас на собеседовании то что тут увидел и услышал, получил нелестную оценку от спрашивавшего. определение замыкания и его свойства и особенности несколько не так он ожидал услышать.
@mishanep
@mishanep 2 жыл бұрын
@@romanmed9035 а чего ожидали?
@romanmed9035
@romanmed9035 2 жыл бұрын
@@mishanep дословно не рассказано. это же не урок где можно попросить подробнее рассказать. но как я понял основной упор на контекст при создании замыкания. при решении задачи воспользовался полученным при просмотре этого видео знанием, которого оказалось недостаточным и ответ оказался совсем не верным. что-то не так с контекстом, поэтому не правильно указал что выведет функция. сохранить задание для анализа не позволили.
@mishanep
@mishanep 2 жыл бұрын
@@romanmed9035 Вообще, когда уверен, можно и поспорить, и уточнить что хотят. В принципе слабо себе представляю кейсы, где могло бы понадобиться использовать контекст вместе с замыканием. Замыкание больше про область видимости. Здесь больше похоже на попытку запутать.
@404Negative
@404Negative 9 ай бұрын
сижу и не понимаю зачем там ...args
@snailbobo
@snailbobo 4 жыл бұрын
Отвратительно
@АндрейИванов-ц3к2л
@АндрейИванов-ц3к2л 3 жыл бұрын
не для средних умов
@agataageeva424
@agataageeva424 3 жыл бұрын
Спасибо)
Что такое рекурсия. Фундаментальный JavaScript
20:32
Михаил Непомнящий
Рет қаралды 24 М.
Long Nails 💅🏻 #shorts
00:50
Mr DegrEE
Рет қаралды 14 МЛН
Симбу закрыли дома?! 🔒 #симба #симбочка #арти
00:41
Симбочка Пимпочка
Рет қаралды 4,6 МЛН
Что такое промисы в JavaScript. Фундаментальный JavaScript
24:51
Михаил Непомнящий
Рет қаралды 45 М.
Деструктуризация массивов. Фундаментальный JavaScript
15:20
Замыкания, просто и с примерами. Функции JavaScript
39:25
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 45 М.
Что такое ЗАМЫКАНИЯ в JavaScript? Как они работают? Разберём на примерах
35:49
Эльбрус Буткемп: школа программирования
Рет қаралды 4 М.