Как закрытие JavaScript работает в этом примере? - PullRequest
0 голосов
/ 24 мая 2018

Я относительно новичок в концепции закрытия 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
...