zoukankan      html  css  js  c++  java
  • js 闭包

    1、变量:局部变量仅在函数内用, 不可重用;全局变量随处可用, 易被污染。

    2、概念:保护并重用局部变量的机制

      a) 定义受保护的局部变量
      b) 定义内层函数专门操作受保护的变量
      c) 定义外层函数将受保护的变量和操作变量的函数封装起来,外层函数将内层函数返回到外部

    3、何时使用: 重用一个变量,又不希望被污染时-保护局部变量

    例: 

    1.

    function f1(){
      var i = 30;
      function f2(){
        i++;
        console.log(i);
      }
      return f2;
    }
    var rs = f1();//f1返回的是一个函数
    rs();//31 -- i=31
    rs();//32--之前的值未释放

    2.

    function fun(){
      var arr =[];
      for (var i=0; i<3 ; i++){
        arr[i]= function(){
          return i;
        }
      }
      //console.log(i);i=3
      return arr;  //返回数组3个元素
    }
    //console.log(i);undefin
    var funs=fun();
    console.log(funs); //[function, function, function]
    console.log(funs[0]); //function (){ return i;}
    console.log(funs[0]()); //3
    console.log(funs[1]()); //3
    console.log(funs[2]()); //3

  • 相关阅读:
    Swift 懒加载
    Swift 模型属性
    Swift 循环引用
    Two Sum
    Best Time to Buy and Sell Stock II
    Best Time to Buy and Sell Stock I
    Pascal's Triangle II
    杨辉三角(数组)
    Merge Sorted Array 合并数组
    Plus One
  • 原文地址:https://www.cnblogs.com/ljbkyBlog/p/7301716.html
Copyright © 2011-2022 走看看