1. 代码展示
var add = (function () {var counter = 0;return function () {return counter += 1;}
})();add();
add();
add();// 计数器为 3//等效C语言代码
int add()
{static int counter = 0;return counter++;
}
2. 作用
闭包
使得函数拥有私有变量称为可能。var counter = 0;
只执行1次。- 计数器受匿名函数的作用域保护,
只能
通过add
方法修改(与直接使用全局变量相比的优势) - 功能类似于c语言中的
static
静态变量 - 闭包是一种保护私有变量的机制,它在函数执行时创建一个
私有作用域
,从而保护内部的私有变量不受外界干扰
。直观地说,闭包就像是一个不会被销毁的栈环境。
参考
- JavaScript闭包