匿名函数

基本概念

  匿名函数:没有名字的函数

  基本语法:

    变量名=function(){函数体;};   大括号后面一定要有分号" ; ",否则会报错

  

<?php
  //定义匿名函数
  $func=function(){
    echo 'hello world';
  };
  //调用匿名函数,有点像可变函数
  $func();

?>

  变量保存匿名函数,本质得到的是一个对象,(closure),闭包

  闭包(closure),来源于以下两者的结合,要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域)

  简单理解:

    函数内部有一些局部变量,(要执行的代码块)在函数执行之后没有被释放,是一位在函数内部还有对应的函数在引用(函数的内部函数:匿名函数)

  

<?php
  function display(){
    //定义局部变量,当函数执行完毕后,该变量会被释放
    $name=__FUNCTION__;   
    //定义闭包  use就是将外部变量(局部),保留给内部使用
     $func=function() use($name){

        echo $name;
     };
     $func();
  }

  display();
?>

  证明:函数的局部变量咋I函数使用完之后没有被释放?

  1.使用内部匿名函数

  2.匿名函数使用局部变量 use

  3.匿名函数被返回给外部使用

<?php
  function display(){
    //定义局部变量,当函数执行完毕后,该变量会被释放
    $name=__FUNCTION__;   
    //定义闭包  use就是将外部变量(局部),保留给内部使用
     $func=function() use($name){

        echo $name;
     };
     //返回内部匿名函数
     return $func;
  }

  $closure=display();

  //以上位置:display函数运行结束:理论上局部变量$name应该结束
  $closure();

  //$name没有被释放。
?>

  

 

 

 

 

  

 

转载于:https://www.cnblogs.com/xiaowie/p/10998296.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值