Я относительно новичок в концепции закрытия Javascript.Я знаю, как выполнить работу, но я хочу понять концепцию насквозь.
Может кто-нибудь объяснить вкратце, почему пример 1,2 работает, а 3,4 нет?Любые хорошие ссылки относительно js замыканий также будут оценены.
Пример 1
var add = (function() {
var counter = 0;
var plus = function() {
return ++counter;
};
return plus;
})();
console.log(add()); //1
console.log(add()); //2
console.log(add()); //3
Пример 2
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
add();//1
add();//2
add();//3
Пример 3
var add=function(){
var counter=0;
var plus=(function(){
return ++counter;
})();
return plus;
}
console.log(add());//1
console.log(add());//1
console.log(add());//1
Пример 4
var add=function(){
var counter=0;
var plus=(function(){
return ++counter;
});
return plus;
}
console.log(add()());//1
console.log(add()());//1
console.log(add()());//1