Прочитал вот эту заметку в блоге Mozilla:
https://blog.mozilla.org/addons/2015/10/14/breakin...
Кто-нибудь, объясните пожалуйста, для чего нужны такие сложности? Изначально let как раз задумывался для того, чтобы ограничить область видимости переменной блоком, а const - для создания read-only переменной. Зачем нужно изолировать эти переменные от обычных var-переменных, создавая некий отдельный lexical scope?