aisensiy 2009-11-21 10:59
浏览 325
已采纳

什么是闭包呀

今天看到新闻说java7将要有闭包了,那个...闭包是什么呀。
我总觉得那种内部类就有闭包的特性,可以引用外部那个类的成员变量什么的。可是今天看了这个显然是不对的呀。
能给我举个例子说明下什么是闭包么

[b]问题补充:[/b]
麻烦说清楚下呀...最好有个实例什么的 谢谢啦

  • 写回答

3条回答 默认 最新

  • a46132456 2009-11-21 23:07
    关注

    闭包的两个特点:

    1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
    2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。

    例:

    [code="java"]
    <br> function sayHello2(name) { <br> var text = &#39;Hello &#39; + name; // local variable <br> var sayAlert = function() { alert(text); } <br> return sayAlert; <br> } <br> var sy = sayHello2(&#39;never-online&#39;); <br> sy(); <br> [/code]

    作为一个Javascript程序员,应该明白上面的代码就是一个函数的引用。如果你还不明白或者不清楚的话,请先了解一些基本的知识,我这里不再叙述。

    上面的代码为什么是一个闭包?
    因为sayHello2函数里有一个内嵌匿名函数
    sayAlert = function(){ alert(text); }
    在Javascript里。如果你创建了一个内嵌函数(如上例),也就是创建了一个闭包。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器