В чем преимущества замыкания в примере?
Задача привязать контекст к определенной функции
Решение с замыканием:
const Person = {
name: "Jhon",
job:"programmist",
}
function logPerson () {
console.log(`Person: ${this.name}, ${this.job}`)
}
function bind(context, fn){
return function () {
fn.apply(context);
}
}
var bind = bind(Person, logPerson);
bind();
console.log(bind);
Решение без замыкания:
const Person = {
name: "Jhon",
job:"programmist",
}
function logPerson () {
console.log(`Person: ${this.name}, ${this.job}`)
}
function bind(context, fn){
return fn.apply(context);
}
bind(Person, logPerson);
Не могу понять в чем преимущество первого решение с замыканием. В том, что функцию в переменную можно положить?
P.S. буду благодарен если объясните какие впринципе есть преимущества использования замыканий. Есть пример с счетчиком, где замыкание происходит на переменной
function makeCounter() {
var currentCount = 1;
return function() {
return currentCount++;
};
}
var counter = makeCounter();
alert( counter() ); // 1
alert( counter() ); // 2
alert( counter() ); // 3
Но тут как бы понятно, что преимущество в том, что эту переменную никак нельзя изменить вне функции. В чем еще преимущества использования замыканий?
Ответы (1 шт):
В приведенном примере разницы нет, так как функции выполняются сразу же в месте объявления, следовательно в момент вызова функции ей доступны все переменные, что и в момент создания.
Разница появляется, как только место объявления и вызова разносятся.
Преимущество замыканий в том, что в момент выполнения функция может обращаться к переменным, которые доступны в момент создания, но могут быть недоступны в месте вызова.
Пример демонстрируется в коде PS c функцией counter: В месте создания ей доступна переменная currentCount, в месте вызова - уже недоступна.