闭包函数的特性和作用及应用场合
来源:互联网 发布:mysql 查询最近一周 编辑:程序博客网 时间:2024/06/14 04:40
<?php
/*1.匿名函数也叫闭包函数,顾名思义就是没有名字的函数;
2.因为没有名字,所以匿名函数不能直接调用,需要先将匿名函数赋值给一个变量,然后由变量函数的形式来调用;
3.匿名函数在函数体结束后必须在}后加上";",这也是它与普通函数的区别;
4.匿名函数可以正常传参数和参与计算;
*/
$var=function($a,$b,$c)
{
return $a+$b+$c;
};//加分号,切记
var_dump($var);//输出变量类型为一个对象,且隶属于closure类中
echo $var(1,2,3);//输出6
echo "<br>";
/*5.我们知道,函数不能直接使用外部定义的全局变量,要想在函数中使用必须加上global关键字;
6.闭包函数的概念通俗的讲:就是在子函数中可以直接调用父函数中所定义的变量;
7.要想让子函数使用父函数中的变量必须使用关键字use来实现
*/
function demo()//父函数demo
{
$a=10;
$b=20;
function one()//子函数one
{
global $a;
echo "1111111111{$a}111111<br>";//无法直接输出在父函数中定义的变量$a,如若声明global,则会调用函数外部的全局变量
}
function two()//子函数two
{
global $b;
echo "222222222222222{$b}<br>";//无法输出$b,在子函数中定义了global也不行
}
$three=function()use($a,$b)//子函数/匿名函数$three(),在匿名函数中使用use加父函数中的变量名就可以在子函数中输出
{
echo "--$a--aaaaaa--$b--<br>";//可以正常输出$a和$b
};//切记加分号
$three();
}
demo();
/*
8.当内层函数调用外部函数的变量时,要加引用,否则不会改变局部变量在函数中的值;
9.闭包的外部是个函数,内部是一个匿名函数;
10.闭包函数的作用就是保护闭包中的内存变量,闭包执行完毕后闭包内部的变量不会存在,而外部函数的变量则会保存;
*/
function test()
{
$a=10;
$b=20;
$inter=function()use(&$a,&$b)//加引用
{
echo $a,$b."<br>";
$a++;
$b++;
echo $a,$b."<br>";
//return,内层函数不能加返回值
};
return $inter;
}
$test=test();
$test();
$test();
$test();//多次输出后发现局部变量的值并不会被释放
//11.匿名函数可以当参数来使用
function test1($func)
{
echo $func();
echo "<br>";
}
test1(function(){
return "$$$$$$$$";
});//直接将一个匿名函数当做参数传入函数中;
?>
/*1.匿名函数也叫闭包函数,顾名思义就是没有名字的函数;
2.因为没有名字,所以匿名函数不能直接调用,需要先将匿名函数赋值给一个变量,然后由变量函数的形式来调用;
3.匿名函数在函数体结束后必须在}后加上";",这也是它与普通函数的区别;
4.匿名函数可以正常传参数和参与计算;
*/
$var=function($a,$b,$c)
{
return $a+$b+$c;
};//加分号,切记
var_dump($var);//输出变量类型为一个对象,且隶属于closure类中
echo $var(1,2,3);//输出6
echo "<br>";
/*5.我们知道,函数不能直接使用外部定义的全局变量,要想在函数中使用必须加上global关键字;
6.闭包函数的概念通俗的讲:就是在子函数中可以直接调用父函数中所定义的变量;
7.要想让子函数使用父函数中的变量必须使用关键字use来实现
*/
function demo()//父函数demo
{
$a=10;
$b=20;
function one()//子函数one
{
global $a;
echo "1111111111{$a}111111<br>";//无法直接输出在父函数中定义的变量$a,如若声明global,则会调用函数外部的全局变量
}
function two()//子函数two
{
global $b;
echo "222222222222222{$b}<br>";//无法输出$b,在子函数中定义了global也不行
}
$three=function()use($a,$b)//子函数/匿名函数$three(),在匿名函数中使用use加父函数中的变量名就可以在子函数中输出
{
echo "--$a--aaaaaa--$b--<br>";//可以正常输出$a和$b
};//切记加分号
$three();
}
demo();
/*
8.当内层函数调用外部函数的变量时,要加引用,否则不会改变局部变量在函数中的值;
9.闭包的外部是个函数,内部是一个匿名函数;
10.闭包函数的作用就是保护闭包中的内存变量,闭包执行完毕后闭包内部的变量不会存在,而外部函数的变量则会保存;
*/
function test()
{
$a=10;
$b=20;
$inter=function()use(&$a,&$b)//加引用
{
echo $a,$b."<br>";
$a++;
$b++;
echo $a,$b."<br>";
//return,内层函数不能加返回值
};
return $inter;
}
$test=test();
$test();
$test();
$test();//多次输出后发现局部变量的值并不会被释放
//11.匿名函数可以当参数来使用
function test1($func)
{
echo $func();
echo "<br>";
}
test1(function(){
return "$$$$$$$$";
});//直接将一个匿名函数当做参数传入函数中;
?>
阅读全文
0 0
- 闭包函数的特性和作用及应用场合
- 电感和磁珠的区别及应用场合和作用
- 上拉电阻和下拉电阻的作用及应用场合
- 关键字volatile的作用和三个不同的应用场合
- 关键字volatile的作用和三个不同的应用场合
- 关键字volatile的作用和三个不同的应用场合
- 函数式编程的特性和适用场合
- php中的匿名函数和闭包(closure)及use的作用
- JS闭包的运用及匿名函数的作用
- JavaScript函数作用域及闭包
- Thread和Service应用场合的区别
- Thread和Service应用场合的区别
- Thread和Service应用场合的区别
- Thread和Service应用场合的区别
- Thread和Service应用场合的区别
- Thread和Service应用场合的区别
- Thread和Service应用场合的区别
- Thread和Service应用场合的区别
- 常用工具下载
- Ubuntu 16.04 + Nvidia 显卡驱动 + Cuda 8.0 (问题总结 + 解决方案)
- 阅读XRecyclerView源码三
- 欢迎使用CSDN-markdown编辑器
- Mac_配置adb环境变量
- 闭包函数的特性和作用及应用场合
- Office Viewer控件Spire.OfficeViewer for .NET V2.16大版本更新 | 附下载
- 词汇积累
- easyui中combobox 验证输入的值必须为选项框中的数据
- 树状数组总结——详解(单点/区间查询, 单点/区间修改, 逆序对)
- 6.曲折转换
- CGI编程---简单实例
- 605. Can Place Flowers
- lodash 之 Chain篇 显试调用与隐性调用