Я запутался в том, что javascript имеет лексическую область видимости.
Лексическая область видимости: Лексическая область видимости означает любые переменные в области видимости, из которых вы определяете функцию (в отличие от того, когда вы ее вызываете) ) находятся в области видимости функции.
Однако в JS ее: область видимости не назначается при определении и компиляции функции, а назначается во время выполнения, то есть при вызове функции
В следующем примере: если бы у JS была лексическая область действия, я получил бы ошибку. Однако я этого не делаю из-за подъема и во время выполнения js проверки двигателя на x.
function f() {
console.log(x);
}
const x = 10;
f(); // 10
Может ли кто-нибудь объяснить на примере, как JS может иметь лексическую область действия? Спасибо!