ОК, давайте посмотрим на это:
//// does not work
function a() {
console.log(v1);
}
function b() {
let v1 = 1;
a();
}
b();
В приведенном фрагменте кода у вас есть 2 функции ( a () и b () ) и вызовите метод b () из вашей "основной" функции (которая не названа, но есть). В a () вы пытаетесь получить прямой доступ к переменной локальной области из b () - чего вы не можете.
//// does work
function a() {
console.log(v1);
}
function b() {
a();
}
let v1 = 1;
b();
Так что в этом фрагменте кода вы такжеиметь a () и b () - а также переменную v1 . Поскольку это объявляется в публичном пространстве (перед вызовом b () - что затем вызывает a () ), оно также доступно в вызываемых вами методах.