js---立即执行函数及闭包

讲解透彻:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures

每个闭包都有它自己的词法环境,闭包内多个函数,共享一个环境,该共享环境创建于一个立即执行的匿名函数体内
、、、
var Counter = (function() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment: function() {
changeBy(1);
},
decrement: function() {
changeBy(-1);
},
value: function() {
return privateCounter;
}
}
})();

console.log(Counter.value()); /* logs 0 /
Counter.increment();
Counter.increment();
console.log(Counter.value()); /
logs 2 /
Counter.decrement();
console.log(Counter.value()); /
logs 1 */
、、、
由上创建的两个计数器,请注意两个计数器 Counter1 和 Counter2 是如何维护它们各自的独立性的。每个闭包都是引用自己词法作用域内的变量 privateCounter ,每次调用其中一个计数器时,通过改变这个变量的值,会改变这个闭包的词法环境。然而在一个闭包内对变量的修改,不会影响到另外一个闭包中的变量。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 闭包 在本文章中** 闭包是指那些能够访问独立(自由)变量的函数 (变量在本地使用,但定义在一个封闭的作用域中)。...
    __Seve阅读 638评论 0 0
  • JavaScript笔记(三) 函数 理解函数 Javascript函数的参数与大多数其他语言中的函数的参数不同。...
    运维开发笔记阅读 348评论 0 0
  • 谈起闭包,它可是JavaScript两个核心技术之一(异步和闭包),在面试以及实际应用当中,我们都离不开它们,甚至...
    强哥科技兴阅读 622评论 0 1
  • 有些想到的,能做到,比如说聊天,喝茶,买本书。有些想到的做不到,比如说失眠,想睡睡不着。 想到做不到,大多属于冤孽...
    关中人阅读 740评论 0 0
  • 2018.11月28日晨间检视 昨日 事预则立不预则废,时刻准备着 自律是通往自由的最佳途径 做事要有头有尾,考虑...
    Missma168阅读 149评论 0 0

友情链接更多精彩内容