Зачастую об этом умалчивают, считают как бы само собой разумеющимся, но кроме знаний собственно языка надо еще уметь выстраивать и реализовывать алгоритмы, отрабатывать структуры данных, и владеть еще огромной кучей сопричастных знаний и навыков.
Нарабатывается это добро исключительно только практикой, через проработку многих сотен и тысяч ситуаций (кейсов), как бы накапливаются микро-решения, из которых потом уже, как из кубиков лего, формируются большие и сложные решения. Разумеется руку при этом постоянно приходится держать на горах документации.
Если ты знаешь команды JS, можешь рассказать о прототипном наследовании, замыканиях и пр., но не знаешь как работает DOM, Event loop, каррирование и пр. то как бы нет, ты не знаешь языка в должной мере.
По хорошему язык вместе со всеми сопричастными контекстами и нюансами нужно учить пару-тройку лет в разнообразных боевых условиях под присмотром опытных и заботливых товарищей/наставников, тогда будет толк, если ты человек адекватный и это занятие тебе подходит. В остальных случаях печаль-печаль-грусть-тоска.
Вангую что очень часто будет непонятно почему и для чего делается так и эдак, а что делать, чтобы стало понятно, читай выше...