Принципы инкапсуляции в js

Вопрос объединяет несколько тем, связанных с js, поэтому выношу его сюда.
Бросается в глаза следующее: в подавляющем количестве вариантов кода на форуме, при объявлении переменных используется var, тогда как на курсе совершенно четко рекомендовали let. Погуглил различия и делаю вывод, что неосознанное использование var (особенно в функциях, в теле циклов и условий!) не соответствует принципу инкапсуляции программного кода. Конечно, на данном этапе это не влияет на тестирование решения, но зачем вырабатывать вредную привычку?
Кроме того, в курсах браузерного js тестирующая система вообще отказывается принимать валидный код с ключевым словом let