Javascript闭包
来源:互联网 发布:交通事故数据2015年 编辑:程序博客网 时间:2024/05/18 12:05
1、将变量 i 保存给在每个段落对象(p)上
1
function
init1() {
2
var
pAry = document.getElementsByTagName(
"p"
);
3
for
(
var
i=0; i<pAry.length; i++ ) {
4
pAry[i].i = i;
5
pAry[i].onclick =
function
() {
6
alert(
this
.i);
7
}
8
}
9
}
2、将变量 i 保存在匿名函数自身
1
function
init2() {
2
var
pAry = document.getElementsByTagName(
"p"
);
3
for
(
var
i=0; i<pAry.length; i++ ) {
4
(pAry[i].onclick =
function
() {
5
alert(arguments.callee.i);
6
}).i = i;
7
}
8
}
后又想到了三种
3、加一层闭包,i 以函数参数形式传递给内层函数
01
function
init3() {
02
var
pAry = document.getElementsByTagName(
"p"
);
03
for
(
var
i=0; i<pAry.length; i++ ) {
04
(
function
(arg){
05
pAry[i].onclick =
function
() {
06
alert(arg);
07
};
08
})(i);
//调用时参数
09
}
10
}
4、加一层闭包,i 以局部变量形式传递给内层函数
01
function
init4() {
02
var
pAry = document.getElementsByTagName(
"p"
);
03
for
(
var
i=0; i<pAry.length; i++ ) {
04
(
function
() {
05
var
temp = i;
//调用时局部变量
06
pAry[i].onclick =
function
() {
07
alert(temp);
08
}
09
})();
10
}
11
}
5、加一层闭包,返回一个函数作为响应事件(注意与3的细微区别)
01
function
init5() {
02
var
pAry = document.getElementsByTagName(
"p"
);
03
for
(
var
i=0; i<pAry.length; i++ ) {
04
pAry[i].onclick =
function
(arg) {
05
return
function
() {
//返回一个函数
06
alert(arg);
07
}
08
}(i);
09
}
10
}
后又发现了两种
6、用Function实现,实际上每产生一个函数实例就会产生一个闭包
1
function
init6() {
2
var
pAry = document.getElementsByTagName(
"p"
);
3
for
(
var
i=0; i<pAry.length; i++ ) {
4
pAry[i].onclick =
new
Function(
"alert("
+ i +
");"
);
//new一次就产生一个函数实例
5
}
6
}
7、用Function实现,注意与6的区别
1
function
init7() {
2
var
pAry = document.getElementsByTagName(
"p"
);
3
for
(
var
i=0; i<pAry.length; i++ ) {
4
pAry[i].onclick = Function(
'alert('
+i+
')'
);
5
}
6
}- 【JavaScript】Javascript闭包
- javascript的闭包javascript
- Javascript闭包演示javascript
- [ javascript ] javascript闭包测试!
- 【javascript】javascript中的闭包
- 【javascript】学习Javascript闭包
- 理解 JavaScript 闭包
- javascript 闭包
- javascript闭包
- Javascript闭包
- JavaScript中的"闭包"
- JavaScript 闭包
- javascript中的闭包
- 理解 JavaScript 闭包
- Javascript Closures[闭包]
- javascript闭包
- Javascript 闭包详解
- Javascript闭包技术
- 有关缓存,缓存算法,缓存框架:part 3
- 微软ASP.NET站点部署指南(6):设置文件夹权限
- 组织管理与系统工程
- 有关缓存,缓存算法,缓存框架:part 4
- 对ARM堆栈的理解
- Javascript闭包
- 学Silverlight 2系列(22):在Silverlight中用JavaScript调用.NET代码
- 有关缓存,缓存算法,缓存框架:part 5
- wince6.0 2450触摸屏问题
- having是分组后的where,是可以聚合的where。
- 修改上传附件的大小
- Specified ID:supplyItemLocalDS collides with the ID for an existing SmartGWT component or object.
- hibernate——多对多映射
- 学Silverlight 2系列(21):如何在Silverlight中调用JavaScript