在Javascript中,什么是闭包(Closure)
来源:互联网 发布:java捕获异常并抛出 编辑:程序博客网 时间:2024/05/01 01:07
导读:
时间:2006-10-13 11:12:02 来源:中国站长资讯网 作者:佚名
闭包的两个特点:
1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
例1。
作为一个Javascript程序员,应该明白上面的代码就是一个函数的引用。如果你还不明白或者不清楚的话,请先了解一些基本的知识,我这里不再叙述。
上面的代码为什么是一个闭包?
因为sayHello2函数里有一个内嵌匿名函数
sayAlert = function(){ alert(text); }
在Javascript里。如果你创建了一个内嵌函数(如上例),也就是创建了一个闭包。
在C或者其它的主流语言中,当一个函数返回后,所有的局部变量将不可访问,因为它们所在的栈已经被消毁。但在Javascript里,如果你声明了一个内嵌函数,局部变量将在函数返回后依然可访问。比如上例中的变量sy,就是引用内嵌函数中的匿名函数function(){ alert(text); },可以把上例改成这样:
这里也就与闭包的第二个特点相吻合。
例2。
上面的代码中,匿名变量function() { alert(num); }中的num,并不是被拷贝,而是继续引用外函数定义的局部变量——num中的值,直到外函数say667()返回。
例3。
上例中,gAlertNumber, gIncreaseNumber, gSetNumber都是同一个闭包的引用,setupSomeGlobals(),因为他们声明都是通过同一个全局调用——setupSomeGlobals()。
你可以通过“生成”,“增加”,“赋值”,“输出值”这三个按扭来查看输出结果。如果你点击“生成”按钮,将创建一个新闭包。也就会重写gAlertNumber(), gIncreaseNumber(), gSetNumber(5)这三个函数。
如果理解以上代码后,看下面的例子:
例4。
在这最后一个例子中,展示如何声明两个不同的闭包。
本文转自
http://javascript.chinahtml.com/2006/javascript-11607091807203.shtml
时间:2006-10-13 11:12:02 来源:中国站长资讯网 作者:佚名
闭包的两个特点:
1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
例1。
作为一个Javascript程序员,应该明白上面的代码就是一个函数的引用。如果你还不明白或者不清楚的话,请先了解一些基本的知识,我这里不再叙述。
上面的代码为什么是一个闭包?
因为sayHello2函数里有一个内嵌匿名函数
sayAlert = function(){ alert(text); }
在Javascript里。如果你创建了一个内嵌函数(如上例),也就是创建了一个闭包。
在C或者其它的主流语言中,当一个函数返回后,所有的局部变量将不可访问,因为它们所在的栈已经被消毁。但在Javascript里,如果你声明了一个内嵌函数,局部变量将在函数返回后依然可访问。比如上例中的变量sy,就是引用内嵌函数中的匿名函数function(){ alert(text); },可以把上例改成这样:
这里也就与闭包的第二个特点相吻合。
例2。
上面的代码中,匿名变量function() { alert(num); }中的num,并不是被拷贝,而是继续引用外函数定义的局部变量——num中的值,直到外函数say667()返回。
例3。
上例中,gAlertNumber, gIncreaseNumber, gSetNumber都是同一个闭包的引用,setupSomeGlobals(),因为他们声明都是通过同一个全局调用——setupSomeGlobals()。
你可以通过“生成”,“增加”,“赋值”,“输出值”这三个按扭来查看输出结果。如果你点击“生成”按钮,将创建一个新闭包。也就会重写gAlertNumber(), gIncreaseNumber(), gSetNumber(5)这三个函数。
如果理解以上代码后,看下面的例子:
例4。
在这最后一个例子中,展示如何声明两个不同的闭包。
本文转自
http://javascript.chinahtml.com/2006/javascript-11607091807203.shtml
- 在Javascript中,什么是闭包(Closure)
- 在Javascript中,什么是闭包(Closure)
- 在Javascript中,什么是闭包(Closure)
- 在Javascript中,什么是闭包(Closure)
- 再谈javascript闭包--Javascript高级用法 ----在Javascript中,什么是闭包(Closure)
- 什么是闭包(Closure)?
- 什么是闭包(Closure)?
- 什么是闭包(Closure)?
- 在Javascript中,什么是闭包
- Javascript闭包(Closure)
- Javascript--闭包(closure)
- Javascript闭包(Closure)
- Javascript闭包(Closure)
- javascript closure 闭包
- Javascript闭包(Closure)
- [Javascript] 闭包 closure
- Javascript闭包(Closure)
- JavaScript闭包(Closure)
- Asp关闭数据库连接函数
- PHP常见问题汇总
- 对 "闭包-closure" 的一些见解http://wj.cnblogs.com/archive/2006/04/22/381851.html
- 华为收购港湾核心业务 有恶意收购嫌疑
- 广州番禺大夫山森林公园游记
- 在Javascript中,什么是闭包(Closure)
- 开发网页程序的时候,JS经常报错该如何处理?
- 第五次作业
- ubuntu下开机自动运行脚本以及定时任务的处理
- 如何取得当前数据的上一条和下一条的ID
- Flex 应用展示之 BEST4C 在线绘图工具
- TOMCAT下基于表单验证常见问题:(oracle)
- 怎样保持键盘清洁
- 自动化测试的计划和实施总纲