js闭包
来源:互联网 发布:淘宝客在哪里参加 编辑:程序博客网 时间:2024/06/06 03:23
闭包的概念
- 可简单理解为读取其他函数内部变量的函数
function a() { var i = 0; function b() { alert(++i); } return b; } var c = a(); c();
引用关系如图:
当函数a的内部函数b被函数外的一个变量引用是创建了一个闭包
执行完var c = a()后,变量c指向函数b,执行c(),会弹出i的值。a执行完返回时,闭包会使a所占资源不被收回,函数a返回后a中的i始终存在,每次执行c(),i自加后alert,假如a返回的不是函数b,a只会被b引用,那么执行结束后,a,b被回收(javascript中,一个对象不再被引用则会被回收,两对象互相引用不被第三者引用,两者会被回收)。
闭包的用途
1. 从外部得到函数内部的局部变量
例如:
function f1(){ var n=999; function f2(){ alert(n); } return f2;}var result = f1();result()//999
2. 用于让变量的值始终保持在内存里。
例如:
function f1(){ var n=999; nadd = function(){ n+=1 } function f2(){ alert(n); } return f2;}var result =f1();result();//999nadd();result();//100
result运行了两次,f1中的局部变量没有清除。
php闭包语法:use
$arg ='text';$test = function() use($arg) { var_dump($arg);};$test();//输出text
$arg = 'text';$test = function () use ($arg) { var_dump($arg); $arg = 'text2';};$test();//输出test$arg = 'text3';$test();//输出test
参考
javascript深入理解js闭包
阅读全文
0 0
- js闭包示例
- JS 闭包 计数器
- js闭包
- js 闭包
- js闭包
- js闭包
- js闭包
- js 闭包
- js 闭包
- js闭包
- js闭包
- (function (){})(); JS 闭包
- JS 闭包应用
- js闭包
- JS闭包
- JS 闭包随笔
- js闭包
- js 闭包
- 637. Average of Levels in Binary Tree
- Hibernate分页
- SLAM的扫盲文章收集
- UGUI ScrollRect滑动居中CenterOnChild实现(修改)
- c++函数调用到底是如何编译的!
- js闭包
- AB1601 PWM模块
- Selenium环境搭建,谷歌浏览器遇到的问题
- 关于@transactional注解的用处与意义
- CSS选择器
- jdbcTemplate返回自定义Bean的列表
- WebView打不开或者显示异常可能原因
- 互为旋转词
- 两栈共享空间