JS闭包

闭包的概念:

  • 闭包的概念:函数A中,有一个函数B,函数B中可以访问函数A中定义的变量或者是数据,此时形成了闭包(这句话暂时不严谨
  • 闭包的模式:函数模式的闭包,对象模式的闭包
  • 闭包的作用:缓存数据,延长作用域链
  • 闭包的优点和缺点:缓存数据

函数模式的闭包:在一个函数中有一个函数

   function f1() {
     var num=10;
     //函数的声明
     function f2() {
       console.log(num);
     }
     //函数调用
     f2();
   }
   f1();

对象模式的闭包:函数中有一个对象


   function f3() {
     var num=10;
     var obj={
       age:num
     };
     console.log(obj.age);//10
   }
   f3();

小栗子:

闭包的方式产生三个随机数,但是相同——也就下面这一段代码通过闭包的形式让最上面的一段代码执行一次,而里面的这个function重复执行

function f1() {
        var num=parseInt(Math.random()*10+1);//----执行了一次
        return function() {//----- 这一段函数执行了三次
            console.log(num)//-----这一段函数执行了三次
        }
    };
    var ff=f1();//定义变量接收
    ff();//10
    ff();//10
    ff();//10

总结:

  1. 总结:如果想要缓存数据,就把这个数据放在外层的函数和里层的函数的中间位置
  2. 闭包的作用:缓存数据.优点也是缺陷,没有及时的释放
  3. 局部变量是在函数中,函数使用结束后,局部变量就会被自动的释放
  4. 闭包后,里面的局部变量的使用作用域链就会被延长

你可能感兴趣的:(JavaScript)