javascript - 如何通俗解释闭包和闭包的作用?
ringa_lee
ringa_lee 2017-04-11 11:14:25
[JavaScript讨论组]

如何通俗的解释以下闭包(closure)和闭包在具体项目中的应用实例?
php中,

function demo(){
    $a=10;
    $b=20;
    $fun=function() use ($a,$b){
        echo $a+$b;
    };
}

demo();

是否和下面作用类似?

class cls{
    public $a=10;
    public $b=20;
    public function fun(){
        echo $this->a+$this->b;
    }
}

$obj=new cls;
$obj->fun();

一般会在具体项目中什么情况下使用?能否给出小例子

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
PHP中文网

面向对象进价之函数对象,函数对象又涉及到函数作用域传递,闭包简单从字面上可以理解为封闭作用域打包传递。一般的函数返回后函数作用域(函数栈内存)消亡,函数调用时产生函数作用域(函数空间入栈)。而闭包产生函数在返回时消亡自身作用域同时又产生新的作用域,新作用域不进栈,造成栈从平级关系出现层次化关系。比如a(普通)函数调用b(闭包产生)函数,b返回c(闭包)函数,函数栈底部是a的作用域,上面是b的作用域,b函数返回,b出栈只剩a,产生的c函数作用域被传递到a作用域里面,出现a作用域包含c作用域,而c的作用域是从b继承(复制)的,就好像b作用域没有消亡一样。

伊谢尔伦

之前就有听到关于闭包,今天查了些资料学习了下,闭包我们可以理解为是一个函数包含了上下文中的变量,通过闭包的方式将变量的声明周期拉长,闭包也有类似于匿名函数,我们可以提供一个变量给另一个函数,然后生成一个新的函数。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号