首页 > 解决方案 > JavaScript 闭包在这个示例案例中是如何工作的?

问题描述

我对 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

标签: javascriptclosureslexical-scopeself-invoking-function

解决方案


推荐阅读