По-простому, без многоэтажной терминологии.
Область видимости - в каких местах кода доступна эта конкретная переменная.
Лексическое окружение - какие переменные доступны в этом конкретном месте кода.
Главная засада Javascript тоже относится к лексическому окружению: что в этом конкретном месте кода отображается в переменную this.