javascript - 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
解决方案
推荐阅读
- certificate - 为 android 创建一个 .crt
- python - 在 for 循环中使用 .sample() 的最佳方法是什么?
- apache2 - Apache2 mod_evasive DOSSystemCommand 不执行命令
- android-studio - 如何在列表视图中对阵列适配器进行 espresso 测试?
- javascript - 如何在 React 中列出对象中的每个键值?
- java - 利用连接和参数的准备好的语句
- sql - SQL Server 中的查找模式
- java - 如何在 Spark JSON 中不跳过空值?
- python-3.x - 使用 python 和 xslt 2.0 进行 schematron 验证
- asp.net-core - 使用 Swashbuckle 时将全局项添加到 swagger.json