Страницы

Поиск по вопросам

пятница, 5 апреля 2019 г.

javascript колбэки

Когда мы передаем функцию в качестве параметра другой функции, мы можем вызвать ее в любой момент внутри содержащей функции, как если бы функция обратного вызова была определена внутри содержащей функции. Это значит, что по сути функция обратного вызова является замыканием. Замыкания имеют доступ к области видимости содержащей функции, а значит могут использовать любые переменные, определенные внутри содержащей функции.
function boo() { alert(a); }
function foo(callback) { var a = 1; callback(); }
foo(boo);
Почему выдает ошибку, ведь
Замыкания имеют доступ к области видимости содержащей функции, а значит могут использовать любые переменные, определенные внутри содержащей функции.


Ответ

Внутри boo (колбэка) видны а и b, но не видно c
function callingFunction(callback) { var c = 4; callback(3); } function containingFunction() { var b = 2; function boo(a) { console.log(a + b); // 5 console.log(typeof c); // undefined } callingFunction(boo); } containingFunction(); console.log(typeof boo); // for @AntonShchyrov

Комментариев нет:

Отправить комментарий