• 学习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。

  • 相关阅读:
    iOS应用崩溃日志分析
    使用Crashlytics来保存应用崩溃信息
    Mac和iOS开发资源汇总
    简单配置PonyDebugger
    程序员的工作不能用“生产效率”这个词来衡量
    使用Reveal 调试iOS应用程序
    MySQL 笔记
    flex弹性布局
    回调函数
    微信小程序开发
  • 原文地址:https://www.cnblogs.com/cqcmdwym/p/3131655.html
Copyright © 2020-2023  润新知