Что учить, чтобы выучить JavaScript

Список задач для изучения JavaScript кажется достаточно объемным. К сожалению, для того, чтобы перейти к изучению React, нужно прорешать задачи на все темы из этого списка. Объясню, для чего нужна каждая тема.

Массивы и объекты

Половина списка задач учит работать с данными в джаваскрипте. Для массивов — необходимо начиться использовать классический for и for-of, а также знать и уметь приять примерно 80% всех методов массива (всего их чуть больше 30). У объектов нет своих методов, но нужно уметь добавлять/удалять/изменять значения по ключу, использовать for-in, а также знать статические методы класса Object.

Задач на эту темы много, потому что методов много. Но и на работе большая часть задач про преобразование данных. Хорошая новость, что это простая часть обучения. Дальше будет больше идейных задач, где придется думать.

Функциональное программирование

Вообще само обучение построено так, что для решения любой задачи нужно написать функцию. Но раздел «Функции» не про это. Здесь разбираются основы функционального программирования, когда функции передаются в качестве архумента и возвращаются из других функций.

Это первая сложная тема. Тут проблема в том, что в большинстве задач результатом работы является функция, а не привычные данные типа массива или объекта. Некоторые задачи могут показаться абстрактнымы. Мы их разбираем, чтобы в реакте понимать, как работает рендеринг функциональных компонент и какие баги могут возникать.

Объектно-ориентированное программирование

Эта тема нужна в основном для собеседований. Когда мы будем разбирать реакт, в самом конце мы разберем, как можно писать компоненты на классах. Там понадобятся знания this, __proto__ и prototype. В реакте это будет буквально одно занятие, но тут придется потратить больше времени, чтобы разобраться с цепочками прототипов.

Рекурсия

Это еще одна сложная тема. Тут сложность в том, что тяжело писать код, потому что пока функция не дописана, ее нельзя проверить, так как для решения она использует саму себя. Опытным путем выяснилось, что 10 задач на рекурсию не хватает, а 20 уже дает понимание темы для большинства студентов.

Рекурсия нам нужна для двух типов задач: последование выполнение асинхронных функций в теме про промисы и построение древовидных UI-элементов (вложенные фильтры и меню) в реакте.

Асинхронное программирование

Тут мы решаем задачки на солбэки и промисы, разбираем, как работает event loop и очереди микро- и макро-тасок. Тема сложная, потому что нужно думать не только, что возвращать из функции, но и когда возвращать. Да еще и возвращаться теперь нельзя с помощью return.

По-моему, задачи существенно сложнее, чем будут на работе, но без них понимания темы не повяляется. Практика показывает, что без решения задачек на тему асинхронности, только чтением учебника добиться ничего нельзя.

Что мы не изучаем

Учу фронтенду как профессии

Обучаю веб-программированию с целью трудоустройства. Готовлю к позиции Junior Frontend Developer: изучаем верстку, Javascript и React, решаем тестовые с собеседований и пишем проект.