完全理解JavaScript闭包

版权声明:本文为博主原创文章,可以转载不可复制。 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

不使用闭包不行吗?

  • 采用全局变量
    var counter = 0;
    function add(){
       return ++counter;
    }
    add();
    counter++;//脚本的任何地方都可以改变值
    add();
    
    虽然能保证add()实现自加,但是全局变量作用于整个脚本,可以在脚本的任何地方发生改变。
  • 采用局部变量
    
    function add(){
       var counter = 0;
       return ++counter;
    }
    add();
    add();
    
    局部变量每次都会被初始化,所以没法实现自加功能。

猜你喜欢

转载自blog.csdn.net/qq_32331073/article/details/82900305