闭包

作者: 高少辉_骚辉 | 来源:发表于2017-05-21 13:20 被阅读3次

    闭包简介

    闭包其实就是一个作用域,在这个作用域环境中的变量是私有的。

    闭包的举例

    var scope = 'global';
    function checkScope(){
      var scope = 'local';
      function f(){
        console.log(scope);
      }
      f();// => 'local'
    }
    console.log(scope);//=> 'global'
    

    从上例可以看出,局部变量的优先级比全局变量的优先级高,闭包里面的变量对于外部是私有的

    利用这个机制,可以写出很有意思的程序

    当我们要看这个程序之前先来看一个程序

    /*
     *用来计算
     */
    function count(){
      count.n ++;
    }
    count.n = 0;
    count();//=>1
    count();//=>2
    count.n ++;//=>3
    

    从上面可以看出,用属性的方法,的确可以保持上一次执行的结果,而且也用到面向对象的思想,但是从最后一行代码可以看出,此方法,可能被恶意的程序所修改值。为此我们可以利用闭包的思想

    var count = (function(){
      var n = 0;
      return function(){
        n++;
        return n;
      }
    }());
    count(); //=>1
    count(); //=>2
    count(); //=>3
    

    这样既保存了,上一次执行结果,也防止恶意程序的修改

    相关文章

      网友评论

        本文标题:闭包

        本文链接:https://www.haomeiwen.com/subject/mxnmxxtx.html