zoukankan      html  css  js  c++  java
  • 建议17:使用闭包跨域开发

      闭包是指词法表示包括不必计算的变量的函数,闭包函数能够使用函数外定义的变量.

      闭包结构有以喜爱盎格比较鲜明的特性:

      (1)封闭性

      外界无法访问闭包内部的数据,如果在比包内声明变量,外界是无法访问的,除非闭包主动向外界提供访问接口.

      (2)持久性

      对于一般函数来说,在调用完毕后,系统会自动注销函数,而对于闭包来说,在外部函数被调用之后,闭包结构依然保持存在系统中,闭包中的数据依然存在,从而实现对数据的持久使用.

      下面以一个经典的闭包示例来演示:

    function f(x){      //外部函数
      var a = x;       //外部函数的局部变量,传参 
      var b = function(){  //内部函数
        return a       //访问外部函数中的局部变量
      }
      a++;           //访问后,动态更新外部函数的变量
      return b        //内部函数
    }
    var c = f(5)       //调用外部函数,并赋值
    console.log(c());      //6 调用内部函数,返回外部函数更新后得值6

    如果没有闭包函数的作用,那怎么种种数据寄存和传递就无法得以实现,例如

    function f(x){
      var a = x;
      var b = a;    //直接把局部变量的值传递给局部变量b
      a++
      return b;     //局部变量b
    }
    var c = f(5)
    console.log(c); //5

      闭包在程序开发中具有重要的价值.例如:使用闭包结构能够跟踪动态环境中数据的实时变化,并即时存储.

    function f(){
      var a = 1;
      var b = function(){
        return a
      }
      a++
      return b
    }
    var c = f()
    console.log(c());   //返回2,而不是1

      上面示例,闭包中变量b存储的值并不是对上面行变量a的值的简单复制,继续以用外部函数定义的局部变量中的值,直到外部函数f调用返回.闭包不会因为函数环境的注销而消失,会始终存在.

  • 相关阅读:
    Java中断机制
    RPC原理
    synchronized和ReentrantLock的区别
    dubbo入门
    Zookeeper入门
    分布式事务
    Mysql索引会失效的几种情况
    java代码执行过慢的问题定位
    持续集成
    Mycat 数据库分库分表中间件
  • 原文地址:https://www.cnblogs.com/chorkiu/p/12120933.html
Copyright © 2011-2022 走看看