Задать вопрос
@frilix
Иногда "творю"

Область видимости и замыкания?

Прохожу курс по Js тут, но найти ответы на ниже приведенные вопросы не могу(или недостаточно знаний чтоб понять, что это ответ)

Как использовать замыкание для того, чтобы "закрыть" значение внутри функции?
Как упрощает жизнь #bind в разрезе замыканий и областей видимости?
  • Вопрос задан
  • 471 просмотр
Подписаться 3 Оценить Комментировать
Решение пользователя Andrey Dyrkov К ответам на вопрос (2)
VIKINGVyksa
@VIKINGVyksa
front-end developer
Ну с замыканиями всё просто

Допустим у нас есть функция которая читает строки, которая в свою очередь читает символы.
function readString(){
 var string;
 string = readChar();
}

function readChar(){
   return 'a';
}

В таком коде у нас есть 2 области видимости, тк. они создаються функциями и функция readChar ничего не знает о переменной string;

Теперь мы "закроем" эту переменную внутри замыкания.

function readString(){
 var string;

  readChar();

   function readChar(){
    string = 'a';   
   }
}


Теперь переменная string есть в замыкании. Когда мы пытаемся обратится к какой-то переменной из функции(scope) то она ищеться снача в нём, если не нашлась тут то ищеться во внешней области видимости, а внешней для функции readChar будет функция readString и в неё есть переменная string. Мы её нашли, если её там не было бы, то её поиск проходил бы вплоть до объекта window.

На счёт второго вопроса ответ есть тут
Это лучший русскоязычный ресурс по javascript
Ответ написан
Комментировать