Для каких случаев используются forEach и for of?
Чтобы задать подобный вопрос, надо не знать, что такое forEach и for of. Откройте документацию и разберитесь.
основное правило:
forEach используется когда вам больше хочется использовать forEach. 
for of  - во всех остальных случаях. 

spoilerну еще в forEach удобнее заранее заготовленную функцию передать, а for of удобнее для await, но такие детали при таком вопросе не существенны.