Переменная baz
объявляется вне анонимной функции (даже если она на самом деле не определена, пока вы не используете выражение функции для присвоения ей значения). Это помещает его область за пределы указанной функции.
foo
и bar
объявлены внутри анонимной функции, которая ограничивает их область действия этой функцией. Функция, назначенная для baz
, может получить к ним доступ, потому что они находились в области действия при создании.