zoukankan      html  css  js  c++  java
  • 关于闭包的理解

    js复习决定把闭包这个特性好好研究清楚

    闭包是一种函数特性把,函数包含子函数,通过子函数访问自身变量,然后在讲子函数返回,达到普通函数做不到的特性

    普通函数可以访问全局变量,但是不能访问其他函数的变量

      var n = 1;
      function f1(){
        alert(n);
        var b = 2;
      }
      f1();    //=> 1
      function f2(){
        alert(b);
      }
      f2();   // b is not defined

    如果我们想访问其他函数中的值,我们可以用闭包

      function f(){
        var n = 1;
        function f1(){
          n = n + 1;
          return n;
         }
          return f1;
          }
    
        var f2 = f();     //把返回的函数值赋给f2
        alert(f2());    //=>2

    我们也可以使用闭包来保存变量

    上述代码,我们调用f2之后可以得到n的值,n的值没有随着f的调用之后消失

     闭包就是定义在函数中能访问其他函数局部变量的函数,所以本质上闭包就是将函数内部和外部连接起来的一座桥梁。

    缓存:最显而易见的好处,就是可以实现数据缓存,我们可以把一个需要长期用到的变量设为闭包函数的局部变量,在子函数里面直接使用它。因此局部变量只定义初始化一次,但我们可以多次调用子函数并使用该变量。这比起我们在子函数中定义初始化变量,多次调用则多次初始化的做法,效率更高。

    实现封装:如同前面所说,闭包函数就如同一个“类”,只有在该闭包函数里的方法才可以使用其局部变量,闭包函数之外的方法是不能读取其局部变量的。这就实现了面向对象的封装性,更安全更可靠。

  • 相关阅读:
    iOS 简单获取当前地理坐标
    iOS 企业账号申请证书和打包ipa
    iOS 代码片段的添加!
    iOS 扩展类方法之category!
    iOS 数组和字典排序
    iOS 字符串NSString 的一些常用方法
    iOS 一些常见问题
    iOS 数据库sqlite完整增删改查操作
    iOS pch文件的创建
    iOS 通过网络请求获取图片的下载歌曲
  • 原文地址:https://www.cnblogs.com/czy960731/p/7570743.html
Copyright © 2011-2022 走看看