Найти в Дзене
Репетитор IT mentor

Замыкания в Javascript на 3 простых примерах

Оглавление

Приветствую вас, друзья. В изучении Javascript многим начинающим разработчикам непонятны тема замыканий. Да, тут действительно есть над чем задуматься. Но так как я сторонник того, чтобы вся сложная теория подкреплялась практикой, то заметка будет ориентирована именно на практические примеры.

Немного теории

Замыкания — это функции, ссылающиеся на независимые (свободные) переменные . Другими словами, функция, определённая в замыкании, «запоминает» лексическое окружение (LexicalEnvironment), в котором она была создана.

Заметка: cвободные переменные — это переменные, которые не объявлены локально и не передаются в качестве параметра.

Для чего нужны замыкания? Это способ задания функций, которые в свою очередь тоже создают функции. Благодаря такой вложенности возвращаемая функция [от внешней (обертки) создающей функции] "запоминает" параметры, переданные ей от создающей (внешней обертки) функции.

Покончим с теорией и перейдем к практике. Единственное, я оставлю здесь ссылки на хорошие статьи по теме:
1. Замыкания в JavaScript (habr)
2. Замыкания в JavaScript (html Academy)
3. Замыкания, функции изнутри (learn.javascrit.ru)

Немного практики

А теперь быстренько приступаем к практике. Каждый пример я постарался визуализировать и сделать кликабельным. Поэтому поэкспериментировать можно будет прям в браузере :)

Пример 1

Пример переключения классов средствами Javascript. Плюс простейшее замыкание для циклического счетчика нажатий:

Запустить код примера 1 ( https://jsfiddle.net/rgx74v8w/7/ )

Пример 2

Переключение CSS-классов средствами Javascript.
Подсветка выбранного элемента.
Пример логики выбора элементов.
Подсчет количества нажатий на каждый элемент посредством присваивания замыкания каждому элементу списка elementList.

-2

Запустить код примера 2 ( https://jsfiddle.net/9md108g3/3/ )

Пример 3

Ручное + автоматическое рандомное переключение CSS-классов средствами Javascript. Подсветка выбранного элемента. Пример логики выбора элементов. Подсчет количества нажатий на каждый элемент посредством присваивания замыкания каждому элементу списка elementList. Мерцание с помощью метода setInterval(), использующий метод переключения CSS-классов в контексте текущего объекта, контекст которого получен через call().

-3

Запустить код примера 3 ( https://jsfiddle.net/dpg3mybz/1/ )

Библиотека с книгами для физиков, математиков и программистов

Репетитор IT mentor в VK
Репетитор IT mentor в Instagram
Репетитор IT mentor в telegram

Что-то пошло не так, и нам не удалось загрузить комментарии. Попробуйте ещё раз
Рекомендуем почитать
🐍🏗️ Основы архитектуры для джунов: построение масштабируемых и чистых приложений на Python
Когда речь идет о создании масштабируемых и поддерживаемых приложений, понимание таких важных понятий, как принципы чистого кода, архитектурные паттерны и SOLID практики проектирования, имеет решающее значение. Изучив эти принципы, новички получат представление о построении надежных, гибких и легко тестируемых приложений, что позволит им сохранить ясность кодовой базы и возможность ее сопровождения по мере роста их проектов. Немного теории Прежде чем погрузиться в архитектуру, я хотел бы ответить...
Циклы, языки и ассемблер
Рассмотрим довольно простую тему организации циклов. Почему я решил это сделать – потому что оказалось, что за привычными, особенно для уже замыленного глаза, вещами может скрываться неожиданное. Для начала обратимся к основам – как циклы делаются на ассемблере. Я буду использовать диалект x86, хотя это не принципиально. Итак, задача: Создать цикл, который повторяется 10 раз. Первый вариант: Этот цикл равносилен конструкции: for (i = 0; i < 10; i++) { ... } Как видим, здесь сначала i присваивается...
Все операторы JavaScript
В JavaScript операторы играют ключевую роль в выполнении различных операций и управлении данными. От арифметических операторов, позволяющих производить математические вычисления, до логических, позволяющих проверять условия, операторы являются мощными инструментами для создания эффективного и гибкого кода. В этой статье мы рассмотрим основные типы операторов в JavaScript и их применение, а также предоставим примеры использования операторов в реальных ситуациях. Арифметические операторы Операторы...
Следующая статья
Документы, вакансии и контакты