javaScript循序渐进(3)
	
    
    
	
	<!--
		@page { margin: 2cm }
		P { margin-bottom: 0.21cm }
	-->
闭包(
closure
)
闭包意味着内层的函数可以引用存在于包围他的函数内的变量,即使外层函数的执行已经终止。这个特性非常强大和复杂。
 
例如:闭包如何使代码更清晰的两个例子
找出
ID
为‘
main’
的元素
var
obj=document.getElementById("main");
修改它的
border
样式
obj.style.border = "1px solid
red";
初始化一个在一秒后执行的回调函数
(callback)
setTimeout(function(){
	
她将隐藏此对象
	obj.style.display = 'none';
},1000);
 
一个用于延时显示警告信息的通用函数
function delayedAlert(msg, time){
初始化一个封装的回调函数
	setTimeout(function(){
	
她将包含本函数的外围函数传入的
msg
变量
	alert(msg);
	},time);
}
 
用两个参数调用
delayedAlert
函数
delayedAlert("zhangxinagrong",2000);
 
在一些函数式程序设计语言里,有一种称为
Curry
化得技术。本质上,
Curry
化是一种通过把多个参数填充到函数体中,实现将函数转换为一个新的经过简化的(使之接受的参数更少)函数的技术。
 
例如:用闭包实现的函数
Curry
化
数字求和函数的函数生成器
function addGenerator(num){
返回一个简单的函数,求两个数字的和,其中第一个数字来自生成器
return function(toAdd){
	return num + toAdd;
	};
}
addFive
现在包含一个接受单一参数的函数,这个函数能求得
5
加上该参数的和
var addFive = addGenerator(5);
这里我们可以看到,在传入参数为
4
时,
addFive
函数的结果是
9
alert(addFive(4)==9);
 
闭包还能解决另一个常见
JavaScript
编写问题。
通过自执行的匿名函数你可以把所有原本属于全局的变量都隐藏起来。
 
例如:使用匿名函数来隐藏全局作用域变量的例子
创建一个新的匿名函数,作为包装
(function(){
变量原本应该是全局的
var msg = "Thanks
zhangxiangrong";
将一个新函数绑定到全局对象
window.onunload = function(){
这个函数使用了“隐藏”的
msg
变量
alert(msg);
};
关闭匿名函数并执行之
})();
 
闭包的概念不容易理解和掌握。
推荐一篇精彩的解释
JavaScript
的闭包是如何工作的文章:
Jim
Jey
的
    
     
	
	
    
    
	相关文档:
        
    
    学用JS(javascript)语句大全。对初学者很有帮助 。现在整理出来,希望能帮助大家。
1.document.write(""); 输出语句
2.JS中的注释为//
3.传统的HTML文档顺序是:document->html->(head,body)
4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document)
5.得到表单中元素的名称和 ......
	
    
        
    
    
                    
 
                    张孝详javascript讲座笔记一
                    收藏
 
                    
                
< type="text/javascript">
                        document.body.oncopy = function() {
                            if (window.clipboardData) {
       ......
	
    
        
    
    第 三 集
--------------------------------------------------------------------------------
曾 有 许 多 网 友 问 我 有 关JavaScript与 框 架(为 求 方 便, 以 下 均 用frame表 示)合 用 的 问 题。 事 实 上,若 您 同 时 想 用frames和JavaScript的 功 能, 
首 先 您 必 需 拥 有Netscape Navigator 2.0 (或 以 ......
	
    
        
    
    
flash与javascript的交互可能讨论的比较多,今天为大家介绍下如何使用flex与javascript进行交互
一、在JavaScript中调用Flex方法
在Flex中可以用ExternalInterface来调用Flex的方法,途径是
1.通过在Flex应用可调用方法列表中添加指定的公用方法。在Flex应用中通过调用addCallback()可以把一个方法添加到此列表中。addC ......
	
    
        
    
    你知道世界上有多少种浏览器吗?除了我们熟知的IE, Firefox, Opera, Safari四大浏览器之外,世界上还有近百种浏览器。
       几天前,浏览器家族有刚诞生了一位小王子,就是Google推出的Chrome浏览器。由于Chrome出生名门,尽管他还是个小家伙,没有人敢小看他。以后,咱们常说浏览器的&ld ......