zoukankan      html  css  js  c++  java
  • 学习javascript的闭包特性用C#来实现一个简单的例子

    闭包总是搞不太懂,而且网上各说风云,还是先参考Javascript高级程序设计第三版里的定义来理解吧。

    定义:闭包是指有权访问另一个函数作用域中的变量 的 函数

    Javascript中具体是通过作用域链来实现闭包的,具体大家可以参考其它文章,我目前也是一知半解,而且即使当前看懂了,但看过就忘了。。。脑子搓没办法。

    接下来我用C#做个简单的理解,仅算是抛砖引玉吧。

     1 public delegate bool Compare(Person p1, Person p2);
     2     class Program
     3     {
     4         static void Main(string[] args)
     5         {
     6             Person p1 = new Person();
     7             p1.values.Add("name", 30);
     8             Person p2 = new Person();
     9             p2.values.Add("name", 20);
    10             Compare compare = CreateCompareFunction("name");
    11             bool result = compare(p1, p2);
    12             compare = null;
    13         }
    14 
    15         static Compare CreateCompareFunction(string name)
    16         {
    17             return ((p1, p2) => { return p1.values[name] > p2.values[name]; });
    18         }
    19     }
    20 
    21     public class Person
    22     {
    23         public Dictionary<string, int> values = new Dictionary<string, int>();
    24     }

    第10行获得内部匿名函数的指针后,调用方法时能够访问外部函数的变量name。

  • 相关阅读:
    sed
    zabbix时间不同步
    zabbix-agent安装
    zabbix安装(网络)
    sendmail启动报错
    12306:被骂十年不吭声,终成大器
    一文带你看清HTTP所有概念(转)
    为什么 K8s 在阿里能成功(转)
    一文解读融资方式
    一文解读工业互联网 (转)
  • 原文地址:https://www.cnblogs.com/cqcmdwym/p/3131655.html
Copyright © 2011-2022 走看看