СИКП на JS
Навык понимать программы на фундаментальном уровне, уверенно проходить собеседования и решать сложные задачи
Входит в подписку (более 50 навыков)
Евгений Филиппов
выпускник Хекслета

Программа обучения
Guard Expression
Уменьшение сложности функций через разделение логики на условия
Параметры по умолчанию
Синтаксис задания параметров по умолчанию в функциях, влияние параметров по умолчанию на поведение функции при отсутствии аргументов, использование параметров по умолчанию для упрощения вызова функций
Выполнение функций
Порядок выполнения функций в составных выражениях
Объекты первого класса
Понятие функций как объектов первого класса, передача функций в качестве аргументов другим функциям, возврат функций как результата выполнения других функций
Лексическое окружение
Понятие лексического окружения и его роль в работе замыканий, взаимосвязь между лексическим окружением и областью видимости
Частичное применение и каррирование
Техника частичного применения для фиксации части аргументов функции, понятие каррирования и его преимущества для создания специализированных функций, сравнение частичного применения и каррирования в реальных сценариях
Моделирование предметной области
Создание моделей предметной области для представления данных и отношений, использование моделей для создания абстракций и сокрытия деталей реализации
Барьеры абстракции
Понятие барьеров абстракции и их роль в разделении уровней системы, примеры повышения уровня абстракции для упрощения взаимодействия между компонентами, влияние барьеров абстракции на поддерживаемость и расширяемость кода
Составные данные
Создание составных данных для представления сложных структур данных, использование составных данных для создания эффективного и масштабируемого кода
Пары
Создание пар и других составных данных для представления отношений между данными, использование пар и других составных данных для создания модульного и гибкого кода
Рациональные числа
Представление рациональных чисел как абстракции на основе пар, реализация операций над рациональными числами,
Моделирование сложных систем
Представление сложных структур данных на базе более простых, создание последовательностей на основе пар, обработка последовательностей
Инверсия
Изучение принципа инверсии зависимостей и его применение для улучшения тестируемости
Помеченные данные
Изучение концепции помеченных данных и их роли в управлении состоянием программы
Диспетчеризация по типу и аддитивность
Понятие аддитивных программ и их преимущества для построения модульных систем, изучение механизма динамической диспетчеризации и его роли в управлении поведением программы
Объекты
Основные принципы работы с объектами в контексте ООП, роль динамической диспетчеризации в работе с объектами и их методами, создание и использование объектов
Нативные объекты
Изучение объектов, встроенных в JavaScript, таких как Object, Array, Date и других, разбор особенностей изменяемости объектов, даже если они объявлены как константы, работа с нативными объектами
Классы и полиморфизм
Классы как структуры для создания объектов, механизм создания объектов с помощью new, изучение понятия полиморфизма и его трех типов: параметрического, ad-hoc и подтипов, примеры использования полиморфизма для создания гибкой и расширяемой системы
Массивы
Основные операции с массивами: добавление, удаление, поиск. особенности работы с массивами в JavaScript, примеры использования массивов для хранения и обработки данных
Map и Set
Структура данных Map для хранения пар ключ-значение, структура данных Set для хранения уникальных значений
Fluent Interface
Паттерн Fluent Interface для создания цепочек вызовов методов, примеры реализации Fluent Interface в JavaScript, преимущества и недостатки использования Fluent Interface
Неизменяемость
Понятие неизменяемости и её роль в функциональном программировании, примеры использования неизменяемых структур данных, влияние неизменяемости на производительность и безопасность кода
Ленивые вычисления
Понятие ленивых вычислений и их применение в JavaScript, примеры использования ленивых вычислений для оптимизации работы с коллекциями, сравнение ленивых и строгих вычислений
Операции rest, spread и деструктуризация
Операция rest для работы с переменным количеством аргументов, операция spread для объединения и копирования данных, деструктуризация массивов и объектов для извлечения данных
Как проходит обучение
Теория в удобном текстовом формате — легко читать даже с телефона. Живые примеры помогают понять, как всё работает. Материал выстроен так, чтобы вы двигались шаг за шагом, не упуская важных деталей
После каждой темы вы проходите квизы, которые помогают убедиться, что вы всё поняли. Вопросы разного уровня сложности дадут возможность как проверить базу, так и попрактиковаться в применении знаний
Мы создали удобную виртуальную среду, где вы решаете задачи прямо в браузере. У вас есть редактор кода, консоль и автоматические тесты, которые моментально показывают результат
Учебный помощник на базе ИИ — это наставник, который всегда под рукой. Он понимает, что нужно сделать и как выглядит ваш код. Если что-то пошло не так, вы сразу получите понятные и полезные подсказки
Подписка от 2 400 ₽/мес
Этот навык уже входит в подписку. Оформи доступ и открывай все навыки сразу (50+)
Подписаться →- 50+ навыков в одной подписке
- Пожизненный доступ к теории
- Обучение с ИИ-ассистентом
- Отмена в любой момент