Страницы

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

воскресенье, 2 февраля 2020 г.

javascript колбэки

#javascript


Когда мы передаем функцию в качестве параметра другой функции, мы можем вызвать ее
в любой момент внутри содержащей функции, как если бы функция обратного вызова была
определена внутри содержащей функции. Это значит, что по сути функция обратного вызова
является замыканием. Замыкания имеют доступ к области видимости содержащей функции,
а значит могут использовать любые переменные, определенные внутри содержащей функции.

function boo() { 
    alert(a);
}

function foo(callback) {
    var a = 1;
    callback();
}

foo(boo);


Почему выдает ошибку, ведь 

Замыкания имеют доступ к области видимости содержащей функции, а значит могут использовать
любые переменные, определенные внутри содержащей функции.
    


Ответы

Ответ 1



Внутри 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

Ответ 2



Замыкания имеют доступ к области видимости не в момент вызова, а в момент создания. Это раз. Далее - функции обратного вызова замыканиями не являются. Это указатель на объект функция. А как создавался этот объект вызывающую сторону не интересует

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

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