FreeCodeCamp has a few that require a good amount of JS knowledge to finish. However, there is a distinct difference between doing projects, and learning the language syntax. Put simply you can’t do projects if you don’t know the language syntax. Solving problems with the language requires at least some understanding of the syntax, otherwise you wont have “enough tools in your toolbox” to do the project with the language.
Don’t focus on memorizing specifics, rather focus on learning what the language can do. Then remember by doing. You will instinctively remember more if you use what you need to remember often. You also will learn pitfalls and how to debug your own code the same way. The more your practice, the more you will need to remember, and the more you will need to debug, as such you will automatically memorise without trying.
Finally, its worth pointing out that everyone has their own method, and learning programming is as much about learning what works for you as it is learning what you want to learn. So try different things, and keep going back to where you find your “stuck” to see if your progressing. Learning this stuff doesn’t happen overnight, but you should be able to at least gauge your progress at the smallest level, so you can see some kind of progress with whatever approach your taking. If you aren’t, if you don’t remember what you learned yesterday, or any day before that, then maybe its time to rethink your learning approach, and find where your going wrong.
Good luck, keep learning