Зубрить можно, но без понимания это бесполезно. Я пробовал — забывается моментально. Лучше сесть и покодить, тогда всякие методы и нюансы сами в голову залетают. А вот замыкания или this реально начинаешь понимать только когда на практике наступишь на грабли, а не по мануалам.
Полезно разделять материал на два типа. Первый — то, что выводится логически: замыкания, прототипы, порядок выполнения асинхронного кода, поведение this в разных вызовах. Это не зубрят, а разбирают до простой модели в голове, иначе пробел вылезет в дебаге.
Второй — «словарный запас»: точные имена и сигнатуры методов, порядок аргументов, приоритет операторов, правила приведения типов. Такие мелочи удобно добивать карточками и короткими сессиями повторения, но не как единственный навык.
Практический критерий простой: закройте редактор и воспроизведите по памяти — напишите debounce с сохранением контекста или разверните массив без встроенных методов. Не вышло — вот ваша тема для повторения.
И оговорка: заучивать стоит только то, что реально встречается в вашем коде. Редкие конструкции достаточно уметь узнавать и находить по справке.