Лексическая область означает, что функция просматривает переменные в контексте, где она была определена, а не в области, непосредственно связанной с ней.
Посмотрите, как лексическая область работает в Lisp, если вы хотите более подробно. Выбранный ответ Кайла Кронина в Динамические и лексические переменные в Common Lisp намного яснее ответов здесь.
Кстати, я узнал об этом только в классе Lisp, и это также применимо и в JS.
Я запустил этот код в консоли хром.
// javascript equivalent Lisp
var x = 5; //(setf x 5)
console.debug(x); //(print x)
function print_x(){ //(defun print-x ()
console.debug(x); // (print x)
} //)
(function(){ //(let
var x = 10; // ((x 10))
console.debug(x); // (print x)
print_x(); // (print-x)
})(); //)
Выход
:
5
10
5