版权声明:本文为博主原创文章,可以转载不可复制。 https://blog.csdn.net/qq_32331073/article/details/82900305
要理解闭包,首先要了解什么是私有变量?《JavaScript中变量的作用域》
闭包,可访问上一层函数作用域变量的函数,即便上一层函数已经关闭。
闭包的目的:使函数拥有私有变量成为可能,注意,私有变量不同于局部变量
。
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
add();
add();
add();
// 计数器为 3
不使用闭包不行吗?
- 采用全局变量
虽然能保证add()实现自加,但是全局变量作用于整个脚本,可以在脚本的任何地方发生改变。var counter = 0; function add(){ return ++counter; } add(); counter++;//脚本的任何地方都可以改变值 add();
- 采用局部变量
局部变量每次都会被初始化,所以没法实现自加功能。function add(){ var counter = 0; return ++counter; } add(); add();