用户名: 密码: 免费注册 忘记密码? 网站地图 | 加入收藏 | 设为首页
首页 | 新闻 | 工具 | 系统 | 办公 | 聊天 | 多媒体 | 网页 | 运营 | 平面 | 欣赏 | 数据库 | 程序 | 服务器 | 组网
网页 | 3dmax | Ghost | Windows Xp| Dreamweaver | photoshop | Flash | office | Alexa | Css | QQ | Asp | PHP | Jsp | Access
Flash MX 2004入门 | 网站推广策略 | CorelDRAW入门 | ASP学习 | 网站建设大师功 | Word入门
  iTbulo.com > 学院 > 网页制作教程 > Javascript教程 > 正文
在Javascript中,什么是闭包(Closure)
iTbulo.COM 2006-10-13 网易()

使result数组添加了三个匿名函数的引用。这句代码也可以写成

varp=function(){alert(item+''+list[i])};

result.push(p);

关于为什么会输出三次都是 "item 3 is undefined"

在上面的例子say667()例子中已经解释过了。

匿名函数function() {alert(item + ' ' + list[i])}中的list[i]并不是经过拷贝,而是对参数list的一个引用。直到函数buildList()返回为止,也就是说,返回最后一个引用。即遍历完list(注:list的最大下标应该是2)后,经过i++也就变成了3,这也就是为什么是item 3,而list[3]本身是没有初始化的,自然也就是undefined了。

例5。

<scripttype="text/javascript">

functionnewClosure(someNum,someRef){

//Localvariablesthatendupwithinclosure

varnum=someNum;

varanArray=[1,2,3];

varref=someRef;

returnfunction(x){

num+=x;

anArray.push(num);

alert('num:'+num+

'\nanArray'+anArray.toString()+

'\nref.someVar'+ref.someVar);

}

}

varclosure1=newClosure(40,{someVar:'never-online'})

varclosure2=newClosure(99,{someVar:'BlueDestiny'})

closure1(4)

closure2(3)

</script>

在这最后一个例子中,展示如何声明两个不同的闭包。

上一页  [1] [2] [3] 

文章搜索
相关资讯
相关文章 相关下载
用来实现Web页面图片移动托拽的代码段
开发跨浏览器JavaScript时要注意的问题
javascript分页
JavaScript技巧:让网页自动穿上外套
实例:使用Javascript制作声音按钮
焦点信息