Изучать язык без определенной цели смысла нет. Нужна реальная практика на реальных задачах и понимание что и для чего нужно. Всякие задачки на кодварсах и прочих не имеют никакого смысла, т.к. они не привязаны к реальности. Да и JS это не вещь в себе, нужно изучать само программирование, то есть алгоритм решения задач, JS в данном случае - лишь способ записи определенного алгоритма. Для того чтобы в голове сложилась полная картина, нужно владеть алгоритмами и структурами данных, основы дискретной мамематики не помешают, ну и собственно практика на реальных проектах. Берешь и делаешь свой сайт, на нем же практикуешься