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调用返回.闭包不会因为函数环境的注销而消失,会始终存在.

  • 相关阅读:
    HAproxy 1.5 dev14 发布
    IBM/DW 使用 Java 测试网络连通性的几种方法
    Skype 4.1 Linux 发布,支持微软帐号登录
    Dorado 7.1.20 发布,Ajax的Web开发平台
    Aspose.Slides for Java 3.0 发布
    开发版本 Wine 1.5.18 发布
    BitNami Rubystack 开始支持 Ruby 2.0
    XWiki 4.3 正式版发布
    Silverlight实例教程 Out of Browser的Debug和Notifications窗口
    Silverlight实例教程 Out of Browser与Office的互操作
  • 原文地址:https://www.cnblogs.com/chorkiu/p/12120933.html
Copyright © 2011-2022 走看看